首页 > 系统服务 > 详细

进程相关内容

时间:2019-04-09 18:43:33      阅读:157      评论:0      收藏:0      [点我收藏+]

一、创建进程的两种方式

 1 #方式一:直接创建
 2 from multiprocessing import Process
 3 import time
 4 def f(name):
 5     time.sleep(1)
 6     print(hello,name,time.ctime())
 7 
 8 if __name__ == __main__:
 9     p_list = []
10     for i in range(3):
11         p = Process(target=f,args=(alex,))    #创建子进程
12         p_list.append(p)
13         p.start()     #启动子进程
14     for p in p_list:
15         p.join()
16     print(end)
17 
18 ‘‘‘方式2:通过类创建‘‘‘
19 from multiprocessing import Process
20 import time
21 class MyProcess(Process):
22     def __init__(self):
23         super(MyProcess, self).__init__()
24     def run(self):
25         time.sleep(1)
26         print(hello,self.name,time.ctime())
27 if __name__ ==  __main__:
28     p_list = []
29     for i in range(3):
30         p = MyProcess()
31         p_list.append(p)
32         p.start()
33     for p in p_list:
34         p.join()

二、queue实现数据共享

 1 from multiprocessing import Process,Queue
 2 
 3 def f(q):
 4     q.put([5,hel])   #往队列里加内容
 5 
 6 def f2(q):
 7     print(q.get())
 8 
 9 if __name__ == __main__:
10     q = Queue()    #创建进程队列对象
11 
12     p_list = []
13     for i in range(3):
14         p = Process(target=f,args=(q,))   #创建进程
15         p_list.append(p)
16     for p in p_list:
17         p.start()
18     for p in p_list:
19         p.join()
20 
21     p2_list = []
22     for i in range(3):
23         p2 = Process(target=f2,args=(q,))
24         p2_list.append(p2)
25     for p2 in p2_list:
26         p2.start()
27     for p2 in p_list:
28         p2.join()
29 ‘‘‘1.实现的功能:通过三个进程往一个队列里存三条内容,然后用另外三个进程从队列取内容并打印
30    2.实现的方式:在创建子进程时将主进程中创建的队列对象通过参数传到子进程中‘‘‘

三、Pipe实现进程通信

 1 ‘‘‘通过Pipe对象实现进程通信‘‘‘
 2 from multiprocessing import Process,Pipe
 3 
 4 def f(conn):
 5     conn.send()
 6     conn.close()
 7 
 8 if __name__ == __main__:
 9     parent_conn,child_conn = Pipe()
10     p = Process(target=f,args=(child_conn,))   #创建进程
11     p.start()
12     print(parent_conn.recv())
13     p.join()
14 
15 ‘‘‘通过Pipe对象实现进程通信,类似于socket通信一收一发‘‘‘

四、manager实现数据共享

 1 from multiprocessing import Process,Manager
 2 
 3 def f(d,l,n):
 4     d[n] = 1
 5     d[2] = 2
 6     d[0.25] = None
 7     l.append(n)
 8 
 9 if __name__ == __main__:
10     with Manager() as manager:
11         d = manager.dict()   #用manager创建字典
12         l = manager.list()   #用manager创建列表
13         p_list = []
14         for i in range(10):
15             p = Process(target=f,args=(d,l,i))
16             p.start()
17             p_list.append(p)
18         for p in p_list:
19             p.join()
20 
21         print(d)
22         print(l)
23 
24 ‘‘‘1.十个进程同时去操作同一字典/列表
25    2.用Manager()对象创建的列表/字典可以被多个进程同时使用,实现数据共享‘‘‘

 

进程相关内容

原文:https://www.cnblogs.com/Finance-IT-gao/p/10678779.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!