Queue 产生的死锁问题

请教有关 Python 多进程 multiprocessing 中使用 Queue 产生的死锁问题

想实现多进程执行某项任务( 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")