1

有没有办法从 CPython 脚本导入模块,但在 PyPy 中运行它们?

问题是我有一个使用大量 SciPy(和 NumPy)的代码,但有些代码可以用 PyPy 优化。

这是我想做的一个随机示例:

sub_run_in_pypy.py 模块:

#assuming this can be optimized with PyPy
def function_a(foo):
    return foo**2

main_run_in_cpython.py 模块:

import scipy.stats as stats

#assuming this exists:
import import_function_for_pypy
pypy_imported_function = import_function_for_pypy(module_name=sub_run_in_pypy, function_name=function_a)

x = stats.t.rvs(5, loc=0, scale=1, size=1)

print pypy_imported_function(x)

如果这不存在,为什么不呢?

编辑:正如 Bakuriu 推断的那样,我建议它可能是在一个单独的进程中运行的东西。这会增加太多开销吗?

4

1 回答 1

0

由于我早在其他线程之前就偶然发现了这个问题,因此此处简要描述了反向机制(我可以将 CPython 嵌入 PyPy 中吗?)

基本思想是在 CPython 解释器旁边启动一个 PyPy 解释器(反之亦然),并通过进程间通信连接它们。虽然您可能很想尝试通过管道或套接字来执行此操作,但强烈建议使用更高级别的库,例如execnet(实际上用于此目的)。

如果您采用低级方法,请务必尽早决定是否以及如何处理多线程或多进程执行等架构,是否需要异步计算甚至主从设置。

于 2015-09-18T10:45:50.517 回答