多进程共享/同步
多进程共享/同步Array/Value#!/usr/bin python#coding=utf-8from multiprocessing import Process,Array,Valuedef f(n,a):n.value = 3.1415926for i in range(5):a[i] = -a[i]if __name__ == '__main
·
多进程共享/同步
Array/ Value
#!/usr/bin python
#coding=utf-8
from multiprocessing import Process,Array,Value
def f(n,a):
n.value = 3.1415926
for i in range(5):
a[i] = -a[i]
if __name__ == '__main__':
num = Value('d',0.0)
arr = Array('i',range(10))
print num.value
print arr[:]
p = Process(target=f,args=(num,arr))
p.start()
p.join()
print num.value
print arr[:]
#!/usr/bin python
#coding=utf-8
from multiprocessing import Process,Array,Value
def f(n,a,raw_list):
n.value = 3.1415926
for i in range(5):
a[i] = -a[i]
raw_list.append(9999)
print raw_list[:]
if __name__ == '__main__':
num = Value('d',0.0)
arr = Array('i',range(10))
raw_list = range(10)
print num.value
print arr[:]
p = Process(target=f,args=(num,arr,raw_list))
p.start()
p.join()
print num.value
print arr[:]
print raw_list[:]
这个进程pclone了父进程的一份数据,raw_list是它那个进程修改了,但原来父进程的raw_lsit还是原来的值
you understand!!
子进程会复制父进程的数据,所以在子进程里面修改的值在父进程中不会改变的。要使用multiprocessing里面的Array和Value
manager
manager就是一个中介、桥梁(proxy),搭起两个进程数据同步的桥梁。
manager自己就有锁Lock,不用管内部实现机制,直接用就好了。
很好很强大,推荐使用这种方式。
用好python官网文档,一个巨大的资源宝库。
#!/usr/bin python
#coding=utf-8
from multiprocessing import Process,Manager
def f(d,l):
d['0'] = None
d['1'] = '111'
d[2] = 222
l.reverse()
print d
print l[:]
if __name__ == '__main__':
manager = Manager()
d = manager.dict()
l = manager.list(range(10))
p = Process(target=f,args=(d,l))
p.start()
p.join()
print d
print l[:]
点击阅读全文
更多推荐
7日热学榜
活动日历
查看更多
活动时间 2025-01-01 00:00:00

丁奇:MySQL高频面试题详解
活动时间 2025-01-01 00:00:00

AI 大模型应用开发 · 实战营
活动时间 2025-01-01 00:00:00

AI系列课程-IT全学科自学科
活动时间 2025-01-01 00:00:00

3 小时掌握 Prompt 核心技巧与 GPT 技术理论
活动时间 2025-01-01 00:00:00

0基础2个月拿下软考高级证书体验课
所有评论(0)