python在windows和linux环境的进程对比


1.fork进程:
(1)在windows系统中不可以用fork来创建进程,linux可以,但是创建大量进程使用很不方便。

2.Process进程:

 

 1 import multiprocessing as ms  2 import time  3 import os  4 
 5 
 6 class MyProcess(ms.Process):  7     def run(self):  8         print("这是进程!", os.getpid())  9 
10     def __del__(self): 11         print("删除成功!") 12 
13 
14 def main(): 15     p1 = MyProcess() 16     p2 = MyProcess() 17  p1.start() 18     time.sleep(1) 19  p2.start() 20     time.sleep(1) 21     p2.join()  #等待进程结束
22     # print(ms.active_children())
23     # while True:
24     # time.sleep(0.01)
25 
26 if __name__ == "__main__": 27     main()

 

windows系统下结果:

linux系统下结果:

说明:

(1)如上代码,当重写Process的run方法创建进程后,可以看到windows系统会在子进程执行完毕后立即删除Process对象,

但是linux系统并没有删除;同时在主进程结束后,windows系统会将主进程的Process对象删除,也就是会出现两次“删除成功”,

但是linux系统中只有一次“删除成功”的输出,也就是说只显示了一次。

(2)if __name__ == '__main__':
在windows环境下创建进程及相关的可执行代码必须放在if __name__ == '__main__':下,否则会报错;但是linux系统没有这个问题。
3.Pool进程:
(1)Pool进程也一样,在windows环境下相关的可执行代码必须放置在if __name__ == '__main__'下。

三种进程的进程回收分析:python的multiprocessing模块进程创建、资源回收-Process,Pool

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM