cari

Rumah  >  Soal Jawab  >  teks badan

python3 使用 multiprocessing.Pool时,子进程未启动

天蓬老师天蓬老师2768 hari yang lalu518

membalas semua(2)saya akan balas

  • 怪我咯

    怪我咯2017-04-17 17:00:10

    只要在 A 代码 p.close() 之后加一句 p.join() 就是等效的。

    或者在 B 代码 p_fi.start() 之前加一句 p_fi.daemon = p_se.daemon = p_th.daemon = True 也是等效的(这时 B 代码也不能正常运行)。

    总之区别就是 A 代码没有等子进程完成就结束主进程了,B 代码等子进程完成再结束主进程。


    更新完整代码后:

    dict_init_queue = Queue()
    

    需要改为:

    from multiprocessing import Manager
    manager = Manager()
    dict_init_queue = manager.Queue()
    

    否则不能在进程之间共享队列。

    balas
    0
  • 怪我咯

    怪我咯2017-04-17 17:00:10

    楼上说得对 再close之后,应该要有一个join 来等待执行结束

    我是看了 https://github.com/shazow/workerpool 这个项目的代码 才知道的

    balas
    0
  • Batalbalas