一、开启进程的两种方式
方式一:
from multiprocessing import Processimport time def task(name): print(‘%s is running‘ %name) time.sleep(3) print(‘%s is done‘ %name) # 在windows系统上,开启子进程的操作必须放到if __name__ == ‘__main__‘的子代码中if __name__ == ‘__main__‘: p=Process(target=task,args=(‘egon‘,)) #Process(target=task,kwargs={‘name‘:‘egon‘}) p.start() # 只是向操作系统发送了一个开启子进程的信号 print(‘主‘) 方式二:
from multiprocessing import Processimport time class Myprocess(Process): def __init__(self,name): super().__init__() self.name=name def run(self): print(‘%s is running‘ %self.name) time.sleep(3) print(‘%s is done‘ %self.name) # 在windows系统上,开启子进程的操作必须放到if __name__ == ‘__main__‘的子代码中if __name__ == ‘__main__‘: p=Myprocess(‘egon‘) p.start() # 只是向操作系统发送了一个开启子进程的信号 print(‘主‘)二、join方法 让主进程在原地等待,等待子进程运行完毕,不会影响子进程的执行三、进程对象相关属性 进程pid:每一个进程在操作系统内都有一个唯一的id号,称之为pid四、僵尸进程和孤儿进程 僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。五、守护进程:本质就是一个‘子进程‘,该‘子进程‘的生命周期<=被守护进程的生命周期六、互斥锁 用mutex.acquire()方法实现并发下的串行的效果
原文地址:https://www.cnblogs.com/zhouyi0316/p/9592334.html
时间: 2024-10-11 03:20:15