python进程池共享变量_浅谈 python multiprocessing(多进程)下如何共享变量

1、问题:

群中有同学贴了如下一段代码,问为何 list 最后打印的是空值?

from multiprocessing import Process, Manager

import os

manager = Manager()

vip_list = []

#vip_list = manager.list()

def testFunc(cc):

vip_list.append(cc)

print 'process id:', os.getpid()

if __name__ == '__main__':

threads = []

for ll in range(10):

t = Process(target=testFunc, args=(ll,))

t.daemon = True

threads.append(t)

for i in range(len(threads)):

threads[i].start()

for j in range(len(threads)):

threads[j].join()

print "------------------------"

print 'process id:', os.getpid()

print vip_list

其实如果你了解 python 的多线程模型,GIL 问题,然后了解多线程、多进程原理,上述问题不难回答,不过如果你不知道也没关系,跑一下上面的代码你就知道是什么问题了。

python aa.py

process id: 632

process id: 635

process id: 637

process id: 633

process id: 636

process id: 634

process id: 639

process id: 638

process id: 641

process id: 640

------------------------

process id: 619

[]

将第 6 行注释开启,你会看到如下结果:

process id: 32074

process id: 32073

process id: 32072

process id: 32078

process id: 32076

process id: 32071

process id:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值