python调用从单独的线程调用多处理



我试图从python线程调用多处理功能,以避免全局解释器锁会影响我的多处理功能。

逻辑看起来像这样:

python --- ongoing python processing...
       
        -> py thread -> py multiprocessing call ->  C-code (dll/ctypes)

这有意义吗?C代码会在单独的核心上运行,还是太复杂而无法工作?

谢谢。

编辑:感谢您的答复。我应该澄清,但是我需要打电话给第二个线程,因为我必须先制作一个python数组,然后将指针传递给C函数。因此,我不能太早称之为多处理功能(以及主要的Python处理需要启动并继续无缝(。

edit :这是代码逻辑,以及为什么我无法将第二个过程与主代码插入第二个进程:

main():
...
p = Process(target=save_c, args=(...,))
p.start()
p.join()   #Main thread will lock here and wait until return;
#Other code that needs to be processed follows the multiprocess call
save_c():
''' Function which calls C-module '''
_sum = ctypes.CDLL('/home/pi/murphylab_picam/temp/libsum.so')
_sum.c_function.argtypes = (ctypes.c_int, ctypes.POINTER(ctypes.c_int))
_sum.c_function(ctypes.c_int(num_numbers), array_type(*_sum.numbers))

我在这里想念什么?是否有其他方法可以使用持续处理的多处理内联?

只要您不想等待该过程完成之前,就不需要立即加入。

这是并发编程的原则。

重要的是,您最终致电join,否则您的主要过程将终止离开孩子孤儿。

child_process = Process(....)
child_process.start()  # the child process will start its independend execution here
do_some_stuff()
do_some_more_stuff()
child_process.join()  # here you are waiting for it to finish

相关内容

  • 没有找到相关文章

最新更新