tim*_*day 5 python optimization pyglet multiplatform
我一直在玩pyglet.这是很不错的.但是,如果我运行我的代码,这是一个可执行文件(称为game.py),前缀是通常的
#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)
通过做
./game.py
Run Code Online (Sandbox Code Playgroud)
然后它有点笨重.但是,如果我运行它
python -O ./game.py
Run Code Online (Sandbox Code Playgroud)
要么
PYTHONOPTIMIZE=1 ./game.py
Run Code Online (Sandbox Code Playgroud)
那么它的超顺畅.
我不在乎为什么它在没有优化的情况下运行缓慢; pyglet的文档提到优化禁用了大量的断言以及OpenGL的错误检查,我很高兴将其留在那里.
我的问题是:人们如何分发Python代码以确保最终用户(对调试或修改代码没有兴趣)运行优化版本的代码.当然有一些更好的方法,而不仅仅是告诉人们确保他们在发行说明中使用优化(他们可能无论如何都不会阅读)?
在Linux上,我可以轻松地./game为最终用户提供运行该文件的脚本:
#!/bin/sh
PYTHONOPTIMIZE=1 ./game.py $*
Run Code Online (Sandbox Code Playgroud)
但这不是非常跨平台的.
我有一个想法,我应该能够改变#!线路
#!/usr/bin/env PYTHONOPTIMIZE=1 python
Run Code Online (Sandbox Code Playgroud)
要么
#!/usr/bin/env python -O
Run Code Online (Sandbox Code Playgroud)
但那些似乎没有按预期工作,我不确定他们在Windows上做了什么.
有没有办法从我不知道的代码中控制优化?就像是:
import runtime
runtime.optimize(True)
Run Code Online (Sandbox Code Playgroud)
运送多平台python代码的人在这个领域被认为是最佳实践?
S.L*_*ott 14
"在Linux上,我可以轻松提供./game脚本来为最终用户运行该文件:"
正确.
"但这不是非常跨平台的."
半正确的.正好有两种shell语言很重要.标准的Linux"sh"和非标准的Windows"bat"(a/k/a cmd.exe),现在都是如此.[当我还是个孩子的时候,有Open VMS DCL和Data General的怪异shell语言和RSX-11以及各种各样的好东西.感谢上帝的Posix标准.]
game.sh
python -O game.py
Run Code Online (Sandbox Code Playgroud)
game.bat
python -O game.py
Run Code Online (Sandbox Code Playgroud)
有趣的是文件是相同的,只有扩展(和文件格式)必须改变,以使各种操作系统愉快.
如果你想要一个真正适合所有人的跨平台,你必须记住Python是一种shell语言.这种事情也有效.
game-startup.py
import subprocess
subprocess.Popen( "python -O game.py" )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
833 次 |
| 最近记录: |