python记录_day30 多进程

2018-11-28 08:52:21来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

1、什么是进程

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配调度的基本单位,是操作系统结构的基础。

同一个程序执行两次,就会产生两个进程

## 进程调度算法:

  先来先服务

  短作业优先

  时间片轮转法

  多级反馈队列

 

2、并发和并行

并发是伪并行,只是看起来是同时运行的。它是基于单核的,一个CPU加多道技术就可实现(多道技术:多个进程之间来回切换)

并行:同时运行,要依靠多个cpu才能实现

3、进程状态转换图

 

 4、同步/异步

同步:一个任务的进行需要等待前面任务的完成

异步:不需要等待前面任务的完成

5、创建进程

#方式一

 1 import time
 2 import os
 3 from multiprocessing import Process
 4 
 5 def func1():
 6     time.sleep(2)
 7     print('我是func1')
 8 
 9 def func2():
10     time.sleep(2)
11     print('我是func2')
12     print('子进程id',os.getpid())
13     print('父进程id',os.getppid())
14 
15 
16 if __name__ =='__main__':
17     start = time.time()
18     # func1()
19     # func2()
20     
21     #开子进程
22     p = Process(target=func2)
23     p.start()  #告诉系统创建子进程
24     func1()
25     
26     # p2 =Process(target=func1)
27     # p2.start()
28     # print('主进程id',os.getpid())
29 
30     end = time.time()
31     diff= end-start
32     print('时间差是》',diff)
创建进程1

#方式2

 1 import time
 2 from multiprocessing import Process
 3 
 4 class MyProcess(Process):
 5     #自定义初始化
 6     def __init__(self,n):
 7         super().__init__()  #必须调用父类的初始化,不然会报错
 8         self.n = n
 9     # run方法要重写,里面是你想让子进程运行的东西
10     def run(self):
11         print(self.n)
12         time.sleep(2)
13         print('子进程结束')
14 
15 if __name__ == '__main__':
16     p = MyProcess(520)
17     p.start()
18     p.join()
19 
20     print('主进程结束')
创建进程2

 

6、注意

#进程之间是空间隔离的(保证数据安全)

#由于进程创建机制不同,在windows下创建子进程的语句要放在 if __name__ =="__main__" 里,因为windows系统创建进  程时相当于import,会先执行一遍文件并拷贝,如果不放在 if 里就会循环调用,报错

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:这些Python学习的步骤和诀窍,你听过吗?

下一篇:centos6,python3,通过pip安装pycurl出现报错提示