Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
同时运行嵌入在C+中的python脚本+; 是否可以在独立的C++线程中使用PyRunSimple文件()来运行脚本IE,使它们同时运行?< /P>_Python_C++ - Fatal编程技术网

同时运行嵌入在C+中的python脚本+; 是否可以在独立的C++线程中使用PyRunSimple文件()来运行脚本IE,使它们同时运行?< /P>

同时运行嵌入在C+中的python脚本+; 是否可以在独立的C++线程中使用PyRunSimple文件()来运行脚本IE,使它们同时运行?< /P>,python,c++,Python,C++,我怀疑不是因为吉尔。但是如果有什么把戏能让它成为可能,请告诉我 致意 Jakob您可以同时运行它们,但GIL阻止它们并行运行并充分利用您的多个CPU核。如果您主要分配给其他长时间运行的C++/CUDA代码以再次释放GIL,并且您只有几个CPU,那么这就足够了 这将是多个主要独立的python解释器所采用的方法,这些解释器只共享一些部分,但遗憾的是,这包括了GIL,因此它对并行处理没有好处,而对并发运行的Scrip之间的隔离只有很小的好处。这种方法的一个例子是 子解释器是一个很少使用的特性,所以在

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

致意
Jakob

您可以同时运行它们,但GIL阻止它们并行运行并充分利用您的多个CPU核。如果您主要分配给其他长时间运行的C++/CUDA代码以再次释放GIL,并且您只有几个CPU,那么这就足够了

这将是多个主要独立的python解释器所采用的方法,这些解释器只共享一些部分,但遗憾的是,这包括了GIL,因此它对并行处理没有好处,而对并发运行的Scrip之间的隔离只有很小的好处。这种方法的一个例子是

子解释器是一个很少使用的特性,所以在C扩展中可能会出现奇怪的bug/竞争条件,而这些bug/竞争条件是不需要的

如果你说C++或java而不是C++,你可以使用IrPython或Jython来实现你的目标,因为那些没有吉尔。 使用CPython,您只能安全地执行多处理所做的事情。多处理模块回避了GIL的设计问题,只是启动了一个额外的进程,但是如果您有昂贵的共享内存结构,并且没有fork()系统调用,那么这将无法实现


当然,如果您开始攻击python实现本身,您可能能够将所有全局状态隔离到更小的上下文中。但是,如果您这样做,您也可以使用为这个多线程嵌入用例设计的语言,比如
Tcl
(查看或F5s)或
Lua
,,您可以同时运行它们,但是GIL阻止它们并行运行并充分利用您的多个CPU核。如果您主要分配给其他长时间运行的C++/CUDA代码以再次释放GIL,并且您只有几个CPU,那么这就足够了

这将是多个主要独立的python解释器所采用的方法,这些解释器只共享一些部分,但遗憾的是,这包括了GIL,因此它对并行处理没有好处,而对并发运行的Scrip之间的隔离只有很小的好处。这种方法的一个例子是

子解释器是一个很少使用的特性,所以在C扩展中可能会出现奇怪的bug/竞争条件,而这些bug/竞争条件是不需要的

如果你说C++或java而不是C++,你可以使用IrPython或Jython来实现你的目标,因为那些没有吉尔。 使用CPython,您只能安全地执行多处理所做的事情。多处理模块回避了GIL的设计问题,只是启动了一个额外的进程,但是如果您有昂贵的共享内存结构,并且没有fork()系统调用,那么这将无法实现


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

一个快速搜索出现了。一个快速搜索出现了。而且在同一个过程中也不可能运行多个解释器?我知道这将是一个昂贵的解决方案。Python有所谓的“子解释器”,但它们共享GIL和其他全局变量。例如,您可以在
mod_wsgi
中看到这些代码,它将python嵌入到多线程ApacheHTTPD中。或者查看多线程llvm调试器。因此,除非你能去除/隔离所有这些全局变量,否则你不能使用多个解释器。我想要共享全局变量。而且在同一个进程中也不可能运行多个解释器?我知道这将是一个昂贵的解决方案。Python有所谓的“子解释器”,但它们共享GIL和其他全局变量。例如,您可以在
mod_wsgi
中看到这些代码,它将python嵌入到多线程ApacheHTTPD中。或者查看多线程llvm调试器。因此,除非你能摆脱/隔离所有这些全局变量,否则你不能使用多个解释器。我想要共享全局变量。