有什么策略可以编写可在CPython,Jython和IronPython中使用的python代码
时间:2020-03-05 18:50:34 来源:igfitidea点击:
尝试同时针对这些环境中的两个环境时,我可以肯定地说,如果必须使用数据库等,那么最终必须为该环境编写唯一的代码。我们有解决这种情况的好方法吗?
解决方案
回答
如果发现确实需要为环境编写唯一的代码,请使用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编写了代码,但是技巧对Jython也同样适用。
基本上,我将所有特定于平台的代码编写在单独的模块/程序包中,然后根据正在运行的平台导入适当的代码。 (请参阅上方的Cdleary评论)
当涉及到SQLite实现之间的差异以及我们正在实现任何GUI代码时,这一点尤其重要。
回答
IMO的第一件事:关注线程安全。 CPython的GIL使编写线程安全的代码变得容易,因为一次只能有一个线程可以访问解释器。不过,IronPython和Jython的手感却稍差一些。
回答
我很确定我们已经知道这一点,但是很遗憾,Jython无法加载c扩展模块。
回答
这里有两个主要问题在起作用...
首先,据我所知,只有CPython具有RAII,我们必须关闭自己在Jython,Ironpython等中的资源。
其次,如前所述,线程安全。