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]