想实现多进程执行某项任务( moviepy 多进程),获得返回的值( frame,numpy 数组)。 尝试过用 ApplyResult.get() 获取,不过返回的内容不能被 pickle,所以用了 queue 。 或者还有其他更好的方法么
下面是个简单的 demo,似乎遇到了死锁,网上没有找到好的方案,求教
import multiprocessing as mp from multiprocessing import Pool,Queue import os,time,random def worker(msg,q): t_start = time.time() print("%s Started with pid: %d"%(msg,os.getpid())) a = 2**100000000 t_stop = time.time() print(msg," Finishing with time: %0.2f"%(t_stop-t_start)) q.put(a) if __name__ == '__main__': mp.set_start_method("spawn") pool = mp.Pool(3) q=mp.Queue() for i in range(10): print(i) pool.apply_async(worker,(i,q,)) pool.close() for thread_i in range(10): result = q.get() print(result) pool.join() print("Waiting") 