我有一个IpConnectionPool对象需要多个进程共享
导包
from multiprocessing.managers import BaseManager
参考代码
# 多进程对象共享
manager = BaseManager()
# 一定要在start前注册,不然就注册无效
# 注册数据库线程池对象
manager.register('IpConnectionPool', IpConnectionPool)
# 启动manager服务(就是开了一个新进程来管理IpConnectionPool对象的)
manager.start()
# 获取进程对象
ipConnectionPool = manager.IpConnectionPool()
# 必须在主线程进行创建进程否则报错
pool = multiprocessing.Pool(int(multiprocessing.cpu_count())) # 创建进程池
for i in range(2,3423):
# 将进程对象传入到进程池中使用
pool.apply_async(batchInsert,args=(i,ipConnectionPool),callback=call_back,error_callback=err_call_back)
time.sleep(5)
pool.close()
pool.join()
既然变量在进程之间可以共享了,那么同时操作一个变量导致的不安全也随之出现。同多线程一样,进程也是通过锁来解决,而且使用方法都和多线程里相同。
lock = multiprocessing.Lock()
lock.acquire()
lock.release()
lock = multiprocessing.Lock()
with lock: # 自动解锁
color=#FF3366 size=5 >点赞 -收藏-关注-便于以后复习和收到最新内容
有其他问题在评论区讨论-或者私信我-收到会在第一时间回复如有侵权,请私信联系我感谢,配合,希望我的努力对你有帮助^_^
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_45203607/article/details/121489007
内容来源于网络,如有侵权,请联系作者删除!