python多进程--交互
admin
2023-07-24 07:01:53
0

1.管道使用

'''
管道Pipe
'''
from multiprocessing import Process,Pipe

def f(conn):
    conn.send('child message')#给主进程发送消息
    conn.close()
if __name__=='__main__':
    parent_conn,child_conn=Pipe()
    p=Process(target=f,args=(child_conn,))
    p.start()
    print(parent_conn.recv())#主进程接收子进程消息
    p.join()

2.Manage增强版pipe,可以接收字典,列表等

from multiprocessing import Process,Manager
import os

def f(d,l):#处理字典,列表函数
    d[1]='1'
    d['2']=2

    l.append(os.getpid())

if __name__=="__main__":
    manage_data=Manager()
    d=manage_data.dict()
    l=manage_data.list()

    p_list=[]
    for i in range(10):#建立10个进程并调用公共函数f
        p = Process(target=f, args=(d, l))
        p.start()
        p_list.append(p)

    for res in p_list:
        res.join()

    print(d)
    print(l)

>>:
{1: '1', '2': 2}
[2472, 7972, 9760, 5328, 5488, 12316, 6780, 12592, 6676, 6408]      

3.进程池与回调函数

from multiprocessing import Process,Pool
import time
import os

def Foo(i):
    time.sleep(2)
    print("in process",os.getpid())
    return i+100

def Bar(arg):
    print("-->exec done:",arg,os.getpid())

if __name__=='__main__':
    pool=Pool(processes=2)#同时运行的进程数
    print("main process",os.getpid())
    for i in range(10):
        pool.apply_async(func=Foo,args=(i,),callback=Bar)

    pool.close()
    pool.join()

>>:
main process 15704
in process 15336
in process 14796
-->exec done: 100 15704
-->exec done: 101 15704
in process 14796
in process 15336
-->exec done: 103 15704
-->exec done: 102 15704
in process 14796
in process 15336
-->exec done: 104 15704
-->exec done: 105 15704
in process 15336
in process 14796
-->exec done: 107 15704
-->exec done: 106 15704
in process 15336
in process 14796
-->exec done: 109 15704
-->exec done: 108 15704

相关内容

热门资讯

小车撞断护栏从数米高桥下飞落,... 极目新闻记者 张皓6月26日早上,多名网友发布视频称,山西阳泉市赛鱼大桥,一辆小车撞断石质护栏后,坠...
为流量摆拍“铁笼游街”,法律就... 一次“人狗同笼”低俗摆拍的底线试探,换来1人被刑拘、8人被行拘的法律回应6月26日,针对近日网传“多...
洛阳市最新人事任免:李夏影任市... 6月25日,洛阳市人民政府任免国家工作人员。任命李夏影(女)为洛阳市人民政府国有资产监督管理委员会副...
“蓝色票政”掀动暑期热浪!郑州... 郑州海昌海洋公园以“夏天就要‘泡’在海洋里”为主题,打造的专属海洋的夏日清凉...
7月1日起,郑州市城乡低保标准... 6月26日,记者从郑州市民政局获悉,郑州市民政局、郑州市财政局近日联合下发通知,明确从2026年7月...
学习新语|发挥党建引领作用 建... 6月24日,习近平总书记在山东德州考察时,走进西于架村党群服务中心,细致询问村党组织建设和开展便民服...
城长中的河南宝贝丨“磨”出潮流... 六面顶压机见证老厂新生“磨”出潮流街区新生态磨街文创园入口处,六面顶压机化身艺术装置。 高洋 摄【开...
河南省发展改革委主任马健:做强... 做强开发区主阵地主引擎——访省发展改革委党组书记、主任马健“近年来,我省扎实推进功能布局优化、主导产...
美国250周年在即,民调:近8... 【文/观察者网 齐倩】今年7月4日,美国将迎来独立250周年纪念日。“建国250周年之际,美国人情感...
柯志恩是否能复制韩国瑜当年胜选... 海峡导报综合报道 根据《ETtoday民调云》23日公布的最新高雄市长选战民调,国民党市长参选人柯志...