进程是CPU最小的资源分配的单位。进程之间的资源是不能共享的。但是线程之间的资源可以是共享的。下面简单的介绍两种方法实现进程之间资源的共享。
1、queue方法:
#!/usr/bin/env python
#_*_ coding:utf-8 _*_
from multiprocessing import Process,Queue
def f(q,x):
q.put([x,'hello'])
if __name__ == '__main__':
q = Queue()
q.put('hi')
for i in range(5):
p = Process(target=f,args=[q,i])
p.start()
while True:
print q.get()
2、manager方法
#!/usr/bin/env python
#_*_ coding:utf-8 _*_
from multiprocessing import Process,Manager
def f(list,dict):
dict[0]=0
dict[1]=1
list.reverse()
if __name__ == '__main__':
manager = Manager()
l = manager.list(range(10))
dict = manager.dict()
p = Process(target=f,args=(l,dict,))
p.start()
p.join()
print dict
print l
note:在上面的实例中,主进程开启了子进程,通过子进程对主进程的数据进行修改之后,在主进程程序进行输出可以发现,数据发生了修改,本身进程之间的资源是不能共享的,即子进程修改的数据不能应用到主进程,通过Queue和Manager实现了对数据的修改。