Python进程通信的几种基操

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]

全部评论

相关推荐

HR_丸山彩同学:你的项目描述里,系统设计讲了很多:MemCube是什么、三级存储架构怎么设计、四种遗忘策略分别是什么。这些面试的时候讲没问题,但简历上不需要这么细。 简历要突出的是影响力,不是实现细节。面试官看简历的时候想知道的是「这个项目有多大价值」,不是「这个项目具体怎么实现的」。实现细节是面试时候聊的 怎么改:技术细节可以精简为一句「采用三级存储架构+四种遗忘策略」,把省出来的篇幅用来写影响力。比如:项目有没有开源?有没有写成技术博客?有没有被别人使用过? 校园经历没有任何信息量,任何人都可以写这句话,写了等于没写。更关键的是,你投的是技术岗,校园活动经历本来就不是加分项。如果非要写,必须写出具体的数字和成果。如果你没有这些数字,那就老老实实删掉 「端到端耗时缩减30-40%」要给出确切数字和绝对值。从1000ms降到600ms是降了40%,从100ms降到60ms也是降了40%,但这两个含义完全不一样。其他也是,涉及到数据,准备好证据,口径统一,面试会问 「熟练」「熟悉」「了解」混在一起用,读起来很乱。而且「了解前端需求」最好改成「具备前后端协作经验」
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务