python多进程子进程不运行问题

python多进程子进程不运行问题precess 使用进程池队列管理问题 背景 在进行视频取帧的过程中 为了加速 用 process 多进程同时去做 将取到的帧放到队列中 之后会同时有另外的进程同时进行处理 但是在实际的操作中发现 直接将队列放到参数的位置 所放到进程池中的子线程是不会运行的

大家好,我是讯享网,很高兴认识大家。

precess使用进程池队列管理问题

背景:

在进行视频取帧的过程中,为了加速,用process多进程同时去做,将取到的帧放到队列中,之后会同时有另外的进程同时进行处理。

但是在实际的操作中发现,直接将队列放到参数的位置,所放到进程池中的子线程是不会运行的。

于是上网查找了一些资料,发现要用Manager来管理multiprocessing.Queue,这样线程池中的子线程才会运行。

代码如下:


讯享网

无法运行的代码:

def x(q): print('hello,world') q = multiprocess.Queue(3) pool = multiprocess.Pool(3) for i in range(10): pool.apply_async(x, args=(q,)) pool.close() pool.join() 

讯享网

上面的代码是不会运行的,最主要的原因就是进程中的参数队列在创建的时候没有用Manager进行管理。

改成下面代码就会成功运行

讯享网def x(q): print('hello,world') m = multiprocess.Manager() q = m.Queue(3) pool = multiprocess.Pool(3) for i in range(10): pool.apply_async(x, args=(q,)) pool.close() pool.join() 

此外我还遇到两种进程池中的进程不执行

  1. pool.apply_async(target, args)中的args参数元祖中,只有一个参数,但是参数后面没有加逗号。
  2. 使用了进程中的event()函数
小讯
上一篇 2025-03-09 12:46
下一篇 2025-03-19 18:15

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/26411.html