编写在CPython,Jython和IronPython中运行的python代码有哪些策略

时间:2008-09-10 07:04:44

标签: python ironpython jython cpython

尝试同时定位其中两个环境时,我可以安全地说,如果必须使用数据库等,最终必须为该环境编写唯一代码。你有办法处理这种情况吗?

6 个答案:

答案 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)

@Daren Thomas:我同意,但您应该使用platform module来确定您正在运行的口译员。

答案 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等中关闭你自己的资源。

其次,如前所述,是线程安全。