python记录_day30 多进程
程序员文章站
2022-06-03 09:52:26
1、什么是进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。 同一个程序执行两次,就会产生两个进程 ## 进程调度算法: 先来先服务 短作业优先 时间片轮转法 多级反馈队列 2、并发和并行 并发是伪并行,只是看起来是 ......
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)
#方式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('主进程结束')
6、注意
#进程之间是空间隔离的(保证数据安全)
#由于进程创建机制不同,在windows下创建子进程的语句要放在 if __name__ =="__main__" 里,因为windows系统创建进 程时相当于import,会先执行一遍文件并拷贝,如果不放在 if 里就会循环调用,报错
上一篇: 验证客户端的链接合法性