python pool 和 quene冲突

简介: python pool 和 quene冲突

在多进程之间传递数据

一定要使用 manager

多进程之间传参 一定不要直接传递 list 等 还没有序列化的参数 这样会照成程序莫名崩溃,并且还没有任何提示


正确代码

def dealJob(q,rl):
    # jobs=json.loads(jobs)
    # l=pickle.loads(l)
    while True:
        rl.acquire()
        try:
            time.sleep(1)
            a=q.get()
            print(a)
            q.put(a+1)
        except Exception as e:
            print(e)
        finally:
            rl.release()
if __name__ == '__main__':
    #with Pool(processes=  os.cpu_count() - 2 if os.cpu_count() > 3 else 1  ) as pool:
    # 错误的写法 这样写, 生成的 quene  解释器 是无法进行序列化的 , 
    # 多进程之间传参 一定不要直接传递 list 等 还没有序列化的参数 这样会照成程序莫名崩溃,并且还没有任何提示
    # q = Quene()  
    m = Manager()
    q = m.Queue()
    q.put(1)
    rl = m.RLock() 
    with Pool(processes=  2  ) as pool:
        rDealJob = pool.apply_async(dealJob,args=(q,rl,))
        pool.close()
        pool.join()
相关文章
|
Python
什么是Python中的内存池(Memory Pool)?
什么是Python中的内存池(Memory Pool)?
253 0
|
Python
116 python高级 - 进程池Pool
116 python高级 - 进程池Pool
97 0
|
存储 Java Unix
Python线程池(thread pool)创建及使用+实例代码
Python线程池(thread pool)创建及使用+实例代码
2630 0
Python线程池(thread pool)创建及使用+实例代码
3_python高阶_进程—进程池Pool
python高阶_进程—进程池Pool
232 0
|
4月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
333 102
|
4月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
356 104
|
4月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
285 103
|
4月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
210 82

推荐镜像

更多