zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    Django REST framework 1
    爬虫基本原理
    QueryDict对象
    Django组件ModelForm
    MongoDB
    Algorithm
    BOM
    CSS
    Vue
    AliPay
  • 原文地址:https://www.cnblogs.com/cwp-bg/p/7465359.html
Copyright © 2011-2022 走看看