首页 > 技术文章 > 创建进程

max404 2019-05-06 20:56 原文

创建进程 方法一

 1 # ------------------------------------------------------------------------
 2 创建进程1
 3 # ------------------------------------------------------------------------
 4 
 5 # multiprocessing 多重处理
 6 # Process 过程
 7 # task 任务
 8 # 在windows系统中,创建进程会将代码以模块得方式从头到尾加载一遍
 9 # 进程一定要写在 if __name__ == '__main__': 代码块里面
10 # 函数名一旦加括号,执行优先级最高,立刻执行
11 
12 from multiprocessing import Process
13 import time
14 
15 def task(name):
16     print('%s is running'%name)
17     time.sleep(3)
18     print('%s is over'%name)
19 
20 if __name__ == '__main__':
21 
22     # task('min')
23     # 同步 函数或类加(),运行优先级第一
24     # 提示创建,立即执行
25 
26     # 实例化一个Process对象
27     p1 = Process(target=task, args=('max',))
28     # 告诉操作系统创建一个进程
29     p1.start()
30 
31     # 异步:start 提示系统创建,不管系统何时创建
32     # 将代码丢一份到内存空间需要时间,再执行
33     # 相当于遇到一次io
34     # 状态变成 阻塞 --> 就绪
35 
36     # 时间因此'主进程'先打印输出
37     print('主进程')


创建进程 方法二

 1 # ------------------------------------------------------------------------
 2 创建进程2
 3 重写cls init方法
 4 run为模块接口函数
 5 # ------------------------------------------------------------------------
 6 
 7 from multiprocessing import Process
 8 import time
 9 
10 class MyProcess(Process):
11     def __init__(self,name):
12         super().__init__()
13         self.name = name
14 
15     def run(self):
16         print('%s is running'%self.name)
17         time.sleep(2)
18         print('%s is end'%self.name)
19 
20 if __name__ == '__main__':
21     obj = MyProcess('mac')
22     obj.start()
23     print('主进程')


join方法:让主进程等待子进程运行结束再运行

 1 # ------------------------------------------------------------------------
 2 join方法
 3 让主进程 等待 子进程运行结束
 4 # ------------------------------------------------------------------------
 5 
 6 from multiprocessing import Process
 7 import time
 8 def task(name,s):
 9     print('%s is running'%name)
10     time.sleep(s)
11     print('%s is over'%name)
12 
13 if __name__ == '__main__':
14     p1 = Process(target=task,args='max')
15     start_time = time.time()
16     p_list = []
17     for i in range(3):
18         p = Process(target=task,args=('子进程%s'%i,i))
19         p.start()
20         p_list.append(p)
21     for i in p_list:
22         i.join() # 让主进程 等待 子进程运行结束
23     print('主进程',time.time()-start_time)
24 
25 # ------------------------------------------------------------------------
26 # ps 进程之间数据隔离
27 # ------------------------------------------------------------------------
28 
29     进程是将代码置入重开内存空间
30     修改后的数据为置入内存空间的数据,非原代码数据



 

推荐阅读