从C-python调用pypy函数

时间:2013-12-24 07:29:22

标签: python pypy

我想用matplotlib绘制CPU密集型函数。我想使用pypy但它与matplotlib不兼容。绘图本身不是CPU密集型的,不需要加速。我想知道是否有办法从C-python调用pypy函数。我可以(ab)使用多处理模块并从C-python中说出set_executable("/.../pypy")吗?

3 个答案:

答案 0 :(得分:3)

您可以将计算的输出写入stdout并将其传递给另一个程序,该程序读取要从stdin绘制的数据,如下所示:

pypy compute.py | python plot.py 

作为中间格式,您可以使用类似JSON的格式,这些格式在pypy和cpython的标准库中都可用,并且可以轻松地从和转换为python原语。

或者,compute.py只能使用子进程模块在CPython中启动plot.py,而不是依赖于shell安排的管道。

或者,您可以使用pickle来保存有关python对象的更多信息,但要小心,因为pickle不是一个标准化的格式。

如果您使用的是最新版本的CPython和Pypy,您可以尝试的另一种方法是multiprocessing.connection模块的Listener和Client类。请注意,在一些旧版本的Python和Pypy(multiprocessing Listeners and Clients between python and pypy)中,交叉python实现Listener和Client已被破坏。 multiprocessing.manager模块可能也适用于不同的cpython和pypy。

答案 1 :(得分:0)

如果您拥有CPU密集型功能,最好的选择是:

A)看看numpy是否有帮助,

B)看看是否可以在python中优化函数,

C)考虑为你的函数编写C扩展名。

D)考虑在pypy中嵌入cpython和matplotlib,如here所示。

答案 2 :(得分:0)

您可以使用execnetConnecting different Python interpreters

有几个例外