python之锁, 队列
程序员文章站
2022-04-05 10:07:18
进程的其他方法 进程id,进程名字,查看进程是否活着is_alive() terminate()发送结束进程的信号 验证进程之间是空间隔离的: 守护进程: 互斥锁: ......
进程的其他方法
进程id,进程名字,查看进程是否活着is_alive() terminate()发送结束进程的信号
import time import os from multiprocessing import process def f1(): print('子进程pid', os.getpid()) print('父进程pid', os.getppid()) print('我是f1') if __name__ == '__main__': p = process(target=f1) p.start() print(p.name) print('子进程的pid',p.pid) print('父进程的pid',os.getpid()) def f1(): time.sleep(5) print('子进程1号') if __name__ == '__main__': p = process(target=f1) p.start() print(p.is_alive()) # 查看进程是否还活着, 返回true或false p.terminate() # 给操作系统发送一个结束进程 time.sleep(0.5) print(p.is_alive())
验证进程之间是空间隔离的:
from multiprocessing import process num = 100 def f1(): global num num = 3 print('子进程num:', num) if __name__ == '__main__': p = process(target=f1) p.start() p.join() print('主进程num:', num)
守护进程:
import time from multiprocessing import process def f1(): time.sleep(3) print('xxxx') def f2(): time.sleep(5) print('普通子进程的代码') if __name__ == '__main__': p = process(target=f1,) p.daemon = true #将该进程设置为守护进程,必须写在start之前,意思如果我的主进程代码运行结束了,你这个子进程不管运行到什么地方,都直接结束 p.start() #开启一个普通的子进程来验证一下守护进程的结束只和主进程的代码运行结束有关系,而整个程序的结束需要主进程和普通的子进程的代码都运行结束才结束 p2 = process(target=f2,) p2.start() #等待2号普通进程的结束,才继续执行下面主进程中的代码 # p2.join() #守护进程会跟跟着父进程的代码运行结束,就结束 print('主进程结束')
互斥锁:
import time from multiprocessing import process,lock def f1(i,lic): lic.acquire() time.sleep(1) print(i) lic.release() if __name__ == '__main__': lic = lock() for i in range(5): p = process(target=f1, args=(i,lic)) p.start()