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]