本文共 782 字,大约阅读时间需要 2 分钟。
(1)在windows系统中不可以用fork来创建进程,linux可以
import multiprocessing as msimport timeimport osclass MyProcess(ms.Process): def run(self): print("这是进程!", os.getpid()) def __del__(self): print("删除成功!")def main(): p1 = MyProcess() p2 = MyProcess() p1.start() time.sleep(1) p2.start() time.sleep(1) #等待进程结束 p2.join() if __name__ == "__main__": main()
windows系统下结果:
linux系统下结果:
(1)如上代码,当重写Process的run方法创建进程后,可以看到windows系统会在子进程执行完毕后立即删除Process对象,
但是linux系统并没有删除;同时在主进程结束后,windows系统会将主进程的Process对象删除,也就是会出现两次“删除成功”,
但是linux系统中只有一次“删除成功”的输出,也就是说只显示了一次。
(2)if name == ‘main’:
在windows环境下创建进程及相关的可执行代码必须放在if name == ‘main’:下,否则会报错;但是linux系统没有这个问题。(1)Pool进程也一样,在windows环境下相关的可执行代码必须放置在if name == 'main’下。
Linux 下,支持转载地址:http://xfhof.baihongyu.com/