@进程间通信:
1.之前学过socket,完成客户端与服务器的通信
2.通过队列完成进程之间的通信:
1 import multiprocessing
2
3 def send_msg(q):
4 """发送数据"""
5 data=[11,22,33,44]
6 for temp in data:
7 q.put(temp)
8 print("数据已经下载完毕。。。")
9
10 def analysis_data(q):
11 analysis_list=list()
12 while True:
13 data=q.get()
14 analysis_list.append(data)
15 if q.empty():
16 break
17 print(analysis_list)
18
19 def main():
20 q=multiprocessing.Queue()
21 q1=multiprocessing.Process(target=send_msg,args=(q,))
22 q2=multiprocessing.Process(target=analysis_data,args=(q,))
23 q1.start()
24 q2.start()
25 if __name__=="__main__":
26 main()
通过进程池进行进程间的通信
1 from multiprocessing import Pool
2 import os,time,random
3
4 def worker(msg):
5 t_start=time.time()
6 print("%s进程开始执行,进程号为%d" %(msg,os.getpid()))
7 time.sleep(random.random()*2)
8 t_stop=time.time()
9 print(msg,"进程%0.2f执行完毕" %(t_stop-t_start))
10
11 def main():
12 po=Pool(3)
13 for i in range(0,10):
14 po.apply_async(worker,(i,))
15
16 print("----start-----")
17 po.close() #关闭进程池,关闭后进程不再接受新的请求
18 po.join() #等待po中所有子进程执行完成,必须放在close后
19 print("----stop------")
20
21
22 if __name__=="__main__":
23 main()