day 37 进程
一.进程理论
进程 是个资源分配单位
进程调度 : 就是多个进程(运行中的程序)在操作系统的控制下被CPU执行,去享用计算机的资源
先来先服务
短作业优先
时间片轮转
多级反馈队列
进程调度的过程是不能够随意被程序影响的
程序的并行与并发
并行更快
并发只是宏观上的同时执行
进程一共有三个状态:
就绪 运行 阻塞
同步
异步
阻塞
非阻塞
进程
pid Process ID 进程ID
ppid parent process id 父进程ID
父进程 负责回收一些子进程的资源
子进程
1 import os 2 from multiprocessing import Process 3 def func(): 4 print('in func',os.getpid(),os.getppid()) 5 6 if __name__ == '__main__': 7 print('in main',os.getpid(),os.getppid()) 8 p = Process(target = func) 9 p.start() 10 # p.join() 11 print('主进程执行完毕')
1 import os 2 import time 3 from multiprocessing import Process 4 def func(num): 5 # time.sleep() 6 print('in func',num,os.getpid(),os.getppid()) 7 8 9 def func1(num): 10 print('in func1',num ,os.getpid(),os.getppid()) 11 if __name__ == '__main__': 12 print('in main',os.getpid(),os.getppid()) 13 p1 = Process(target=func,args = (1,)) 14 p1.start() 15 p2 = Process(target=func1,args = (2,)) 16 p2.start() 17 print('主进程结束了')
1 import os 2 import time 3 from multiprocessing import Process 4 def func(num): 5 # time.sleep() 6 print('in func',num,os.getpid(),os.getppid()) 7 8 9 def func1(num): 10 print('in func1',num ,os.getpid(),os.getppid()) 11 if __name__ == '__main__': 12 print('in main',os.getpid(),os.getppid()) 13 for i in range(10): 14 p1 = Process(target=func,args = (i,)) 15 p1.start() 16 print('主进程结束了')
1 import os 2 import time 3 from multiprocessing import Process 4 def func(num): 5 # time.sleep() 6 print('in func',num,os.getpid(),os.getppid()) 7 8 9 def func1(num): 10 print('in func1',num ,os.getpid(),os.getppid()) 11 if __name__ == '__main__': 12 print('in main',os.getpid(),os.getppid()) 13 l = [] 14 for i in range(10): 15 p1 = Process(target=func,args = (i,)) 16 p1.start() 17 l.append(p1) 18 for v in l: 19 v.join() 20 print('主进程结束了')
1 import os 2 import time 3 from multiprocessing import Process 4 def func(num): 5 time.sleep(2) 6 print('in func',os.getpid(),os.getppid()) 7 if __name__ =='__main__': 8 print('in main',os.getpid(),os.getppid()) 9 p1 = Process(target = func,args = (1,)) #进程对象 10 p1.start() 11 print(p1.is_alive()) 12 p1.terminate() 13 time.sleep(1) 14 print(p1.is_alive()) 15 print('主进程的代码结束了')
1 import os 2 import time 3 from multiprocessing import Process 4 class MyProcess(Process): 5 def __init__(self,num): 6 super().__init__() 7 self.num = num 8 def run(self): 9 print('in run ',self.num,os.getpid(),os.getppid()) 10 if __name__ == '__main__': 11 print('in main ', os.getpid(), os.getppid()) 12 p = MyProcess(1) 13 p.start()

浙公网安备 33010602011771号