运行Python脚本同时嵌入C

Run python scripts concurrently embedded in C++

本文关键字:Python 脚本 运行      更新时间:2023-10-16

可以运行脚本即可。使用pyrun_simplefile()在单独的C 线程中同时运行?

我怀疑否是因为吉尔。但是,如果有任何技巧使它成为可能。

最好的问候jakob

您可以同时运行它们,但是GIL可防止它们并行运行,并充分利用您的多个CPU内核。如果您主要派遣其他长时间运行的C /CUDA代码,该代码再次发布GIL,并且只有几个CPU,则这可能足够好。

这将是子解释者采取的方法,多个仅共享某些部分的独立python口译员,但可悲的是,这包括GIL,因此对并行处理没有任何好处,并且仅在同时运行之间进行隔离的小好处脚本。这种方法的一个例子是mod_wsgi。

sub口译器是很少使用的功能,因此可以期待不期望它们的C扩展中的怪异错误/竞赛条件。

如果您说C#或Java而不是C ,则可以使用Ironpython或Jython来实现您的目标,因为这些目标没有GIL。

使用cpython,您只能安全地完成多处理。多处理模量避开了GIL的设计问题,只是启动了一个额外的过程,但是如果您拥有昂贵的共享内存结构,并且没有fork()Syscall,则无法交付。

当然,如果您开始攻击Python实现本身,则可以将所有全球状态隔离到较小的环境中。但是,如果这样做,您不妨使用专为此多线程嵌入用户酶(例如Tcl(查看Naviserver或f5s irules))或Lua的语言。