尝试同时定位其中两个环境时,我可以安全地说,如果必须使用数据库等,最终必须为该环境编写唯一代码。你有办法处理这种情况吗?
答案 0 :(得分:15)
如果您 发现您需要为环境编写唯一代码,请使用pythons
import mymodule_jython as mymodule
import mymodule_cpython as mymodule
将这些内容放在一个简单的模块中(''module_importer'?)并编写如下代码:
from module_importer import mymodule
这样,您需要做的就是每个平台改变module_importer.py
。
答案 1 :(得分:10)
答案 2 :(得分:2)
我为CPython和IronPython编写代码,但提示也适用于Jython。
基本上,我将所有特定于平台的代码编写在单独的模块/包中,然后根据我正在运行的平台导入相应的代码。 (见上面的cdleary评论)
当涉及到SQLite实现之间的差异以及实现任何GUI代码时,这一点尤为重要。
答案 3 :(得分:1)
IMO的第一件事:专注于线程安全。 CPython的GIL使得编写线程安全代码变得容易,因为一次只有一个线程可以访问解释器。尽管如此,IronPython和Jython还是少了一点。
答案 4 :(得分:0)
我很确定你已经知道这一点,但不幸的是Jython can't load c extension modules.
答案 5 :(得分:0)
这里有两个主要的问题......
首先,据我所知,只有CPython有RAII - 你必须在Jython,Ironpython等中关闭你自己的资源。
其次,如前所述,是线程安全。