我一直在玩pyglet。很不错。但是,如果我运行我的代码,它在一个可执行文件中(调用它游戏.py)以通常的前缀
#!/usr/bin/env python
通过做
^{pr2}$那就有点笨重了。但如果我用
python -O ./game.py
或者
PYTHONOPTIMIZE=1 ./game.py
那么它的超级光滑。在
我不在乎为什么没有优化它运行得很慢;pyglet的文档提到优化会禁用许多断言和OpenGL的错误检查,我很高兴就此结束。在
我的问题是:分发Python代码的人如何确保最终用户(对调试或修改代码没有兴趣)运行代码的优化版本。当然,除了告诉人们确保他们在发行说明中使用了优化,还有更好的方法(他们可能根本就不会读到这一点)?在
在Linux上,我可以很容易地提供./game
脚本来为最终用户运行文件:
#!/bin/sh
PYTHONOPTIMIZE=1 ./game.py $*
但这不是很跨平台。在
我有一个想法,我应该能够将#!
行改为
#!/usr/bin/env PYTHONOPTIMIZE=1 python
或者
#!/usr/bin/env python -O
但这些功能似乎并不像预期的那样有效,而且我不确定它们在Windows上能做什么。在
有没有什么方法可以从我不知道的代码中控制优化? 比如:
import runtime
runtime.optimize(True)
发布多平台python代码的人认为这方面的最佳实践是什么?在
回答你的问题(与解决你的问题相反,S.Lott做得很好),我想很多时候发布Python代码的人不会担心这个问题,因为优化标志很少有任何效果。我相信Pyglet是我多年来使用Python所听到的唯一例外。引用Python docs,“优化器目前没有多大帮助;它只删除assert语句”。
“在Linux上,我可以很容易地提供一个./game脚本来为最终用户运行文件:”
正确。在
“但这不是很跨平台。”
一半正确。有两种shell语言很重要。标准Linux“sh”和非标准Windows“bat”(a/k/a命令提示符)现在只有这些了。[当我还是个孩子的时候,有开放的VMS-DCL和Data-General怪异的shell语言和RSX-11以及各种很棒的东西。感谢上帝给了Posix标准。]
在游戏.sh在
在游戏.bat在
有趣的是,这些文件都是一样的,只有扩展名(和文件格式)必须更改才能使各种操作系统满意。在
如果您希望跨平台的true一刀切,您必须记住Python是一种shell语言。这种事也行。在
游戏-启动.py在
相关问题 更多 >
编程相关推荐