Python 进程对象的一些操作
1 from multiprocessing import Process 2 import time 3 4 # 第一种创建方式,实例化Process类传值 5 def task(name): 6 print('%s is running'%name) 7 time.sleep(3) 8 print('%s is over'%name) 9 10 11 if __name__ == '__main__': 12 # 1 创建一个对象 13 p = Process(target=task, args=('谷爱凌',)) 14 p.start() 15 print('主进程') 16 17 18 # 第二种方式 类的继承 19 from multiprocessing import Process 20 import time 21 22 23 class MyProcess(Process): 24 def run(self): # 这里必须要用run方法 25 print('GGG') 26 time.sleep(1) 27 print('YYY') 28 29 30 if __name__ == '__main__': 31 p = MyProcess() 32 p.start() 33 print('主进程') 34
# p.join()方法使主进程必须等待子进程执行完毕返回后才能继续执行 # p.terminate() # 告诉操作系统杀死当前进程 根据操作系统调度可能会有延迟 类似kill
from multiprocessing import Process # 进程之间数据相互隔离 money = 100 def task(): global money # 局部修改全局 money = 200 print('子进程',money) if __name__ == '__main__': p = Process(target=task) p.start() p.join() print('主进程',money)
from multiprocessing import Process, current_process 查看当前进程号id与父进程号id的方法 ''' current_process().pid # 查看当前进程的进程号 import os os.getpid() # 查看当前进程进程号 os.getppid() # 查看当前进程的父进程进程号 p.terminate() # 杀死当前进程 由操作系统执行 time.sleep(0.1) # 如果不加本行延时代码,操作系统调度可能慢于程序执行,导致下一行会判断为仍然存活 print(p.is_alive()) # 判断当前进程是否存活 如果没有上一行的延时,p进程可能仍会判断为存活
'''
# 关于守护进程daemon from multiprocessing import Process import time def task(): print('子进程活着') time.sleep(1) print('子进程死亡') if __name__ == '__main__': p = Process(target=task) p.daemon=True # 将p作为守护进程,一定要在start前执行才有效 p.start() # p.daemon=True # AssertionError: process has already started print('主进程')