尝试同时针对其中两个环境,我可以肯定地说,如果您必须使用数据库等,您最终必须为该环境编写独特的代码。你有一个很好的方法来处理这种情况吗?
6 回答
如果您确实发现需要为环境编写独特的代码,请使用 pythons
import mymodule_jython as mymodule
import mymodule_cpython as mymodule
将这些东西放在一个简单的模块中(''module_importer''?)并编写如下代码:
from module_importer import mymodule
这样,您需要做的就是module_importer.py
根据平台进行更改。
@Daren Thomas:我同意,但是您应该使用平台模块来确定您正在运行的解释器。
我为 CPython 和 IronPython 编写代码,但tip 也适用于 Jython。
基本上,我将所有特定于平台的代码编写在单独的模块/包中,然后根据我正在运行的平台导入适当的代码。(见上面cdleary的评论)
当涉及到 SQLite 实现之间的差异以及您正在实现任何 GUI 代码时,这一点尤其重要。
IMO 的第一件事: 关注线程安全。CPython 的 GIL 使编写线程安全代码变得容易,因为一次只有一个线程可以访问解释器。IronPython 和 Jython 的手感稍差一些。
I'm pretty sure you already know this but unfortunately Jython can't load c extension modules.
There are two major issues at play here...
Firstly, to my knowledge, only CPython has RAII - you have to close your own resources in Jython, Ironpython, etc.
And Secondly, as has been mentioned, is thread safety.