• Python多进程修改共享变量的问题
  • python

from multiprocessing import Pool,freeze_support,Lock
import time
cnt=0
lock=Lock()
def test(item):
   with lock:
       global cnt
       time.sleep(1)
       cnt=cnt+1
if __name__=='__main__':
   freeze_support()
   start=time.time()
   pool=Pool()
   pool.map(test,range(0,10))
   pool.close()
   pool.join()
   print(cnt)
   print(time.time()-start)

用python开多进程执行某个test任务,test任务简化为一个延时操作,每进行一次test就让共享变量加1,使用了multiprocessing中的锁Lock()来解决数据竞争的问题,发现无法解决,每次print的cnt值还是0(如果成功解决数据竞争问题的话cnt最后应该是10),请问应该怎么改?


  • Caroline    2020-04-29 10:41:41
  • 阅读 950    收藏 0    回答 1
  • 邀请
  • 收藏
  • 分享
发送
登录 后发表评论
  • 51testing软件测试圈微信