在C++中同时运行Python脚本

2024-06-16 10:09:11 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以在独立的C++线程中使用PyRunSimple文件()来运行脚本?你知道吗

我怀疑不是因为吉尔。但如果有什么把戏能让它成为可能,请告诉我。你知道吗

致以最诚挚的问候 雅各布


Tags: 文件脚本线程问候把戏pyrunsimple
1条回答
网友
1楼 · 发布于 2024-06-16 10:09:11

您可以同时运行它们,但是GIL阻止它们并行运行并充分利用多个CPU核。如果你主要是把其他的长时间运行的C++或CUDA代码重新发布到吉尔,如果你只有几个CPU,这就足够好了。你知道吗

这将是Sub-Interpreters所采用的方法,多个主要独立的python解释器只共享一些部分,但不幸的是,这包括GIL,因此它对并行处理没有好处,而对并发运行的scrip之间的隔离只有很小的好处。这种方法的一个例子是mod_wsgi。你知道吗

子解释器是一个很少使用的特性,所以在C扩展中可能会出现一些奇怪的错误/竞争条件,而这些错误/竞争条件是不可能的。你知道吗

<>如果你说C++或java而不是C++,你可以使用IrPython或Jython来实现你的目标,因为那些没有吉尔。你知道吗

使用CPython,您只能安全地执行多重处理所做的事情。多处理模块避开了GIL的设计问题,只是启动了一个额外的进程,但是如果您有昂贵的共享内存结构,并且没有fork()系统调用,那么这就无法实现。你知道吗

当然,如果您开始攻击python实现本身,就可以将所有全局状态隔离到更小的上下文中。但是如果您这样做了,您最好只使用为这种多线程嵌入用例设计的语言,比如Tcl(请看NaviServer或F5sirules)或Lua。你知道吗

相关问题 更多 >