请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于from multiprocessing import Queue

多进程里面的这个 Queue 不能用于进程池间的通信。

进程池有两种模式,一个是 multiprocessing 里面的,一个是 concurrent.futures 里面的
1.pool = multiprocessing.Pool(2))
2.process_pool = ProcessPoolExecutor(2)

请问这个 Queue 是不能用于第一种模式,还是两种都不行?因为课程里面的例子只讲到第一种不行。

正在回答 回答被采纳积分+3

1回答

bobby 2021-07-07 20:59:20

concurrent.futures 是基于threading和multiprocessing的进一步封装,用起来简单,

from multiprocessing import Queue

这里的queue是用于多进程的,所以要看你的ProcessPoolExecutor是基于进程的还是线程的

0 回复 有任何疑惑可以回复我~
  • 提问者 村口胡大爷 #1
    ProcessPoolExecutor 不就是进程池吗,肯定是基于进程的
    回复 有任何疑惑可以回复我~ 2021-07-07 23:08:00
  • bobby 回复 提问者 村口胡大爷 #2
    https://blog.csdn.net/qq_34336037/article/details/102621128 你可以看看这个 只要是进程池就可以使用上面的queue
    回复 有任何疑惑可以回复我~ 2021-07-08 15:58:12
  • 提问者 村口胡大爷 回复 bobby #3
    multiprocessing.Queue( ),只能用于手动创建的进程的通信,如果是进程池创建的进程通信,就要用Manager( ).Queue( ),这样理解对不对
    回复 有任何疑惑可以回复我~ 2021-07-08 20:36:15
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信