queue
from multiprocessing import Process
from multiprocessing import Queue
from time import sleep
def download(q):
file = ['a','b','c','d']
for i in file:
print('正在加载:{}'.format(i))
sleep(1)
q.put(i)
def getfile(q):
while True:
try:
files = q.get(timeout = 5)
print('{}保存成功'.format(files))
except:
print('end')
break
if __name__ == '__main__':
q = Queue(5)
p1 = Process(target=download,args=(q,))
p2 = Process(target=getfile,args=(q,))
p1.start()
p1.join()
p2.start()
p2.join()
print('-------!!!!!!!!!!-------')输出结果
正在加载:a
正在加载:b
正在加载:c
正在加载:d
a保存成功
b保存成功
c保存成功
d保存成功
end
-------!!!!!!!!!!-------
请在这里输入引用内容
pipe
from multiprocessing import Process
from multiprocessing import Pipe
def f(qq):
qq.send(['child!!!!!!'])
qq.close()
if __name__ == '__main__':
father, child = Pipe()
p = Process(target=f , args=(child,))
p.start()
print(father.recv())
p.join()输出结果
['child!!!!!!']
manager
from multiprocessing import Process,Manager
import os
def f(d,l):
d[1] = "1"
l.append(os.getpid())
if __name__ == '__main__':
with Manager() as manager:
d = manager.dict()
l = manager.list()
q = []
for i in range(10):
p = Process(target=f,args=(d,l))
p.start()
q.append(p)
for j in q:
j.join()
print(d)
print(l)输出结果
{1: '1'}
[60776, 62924, 63372, 62832, 62732, 59464, 46104, 30552, 63100, 61944]

京公网安备 11010502036488号