生成的子进程数问题



我有以下代码:

import multiprocessing
import os
def info(title):
    print("~"*50)
    print(title)
    print('module name:', __name__)
    print('parent process:', os.getppid())
    print('process id:', os.getpid())
def foo():
    info("foo()")
    print("bar")
if __name__ == '__main__':
    while True:
        p = multiprocessing.Process(target=foo)
        p.start()
        p.join()
        time.sleep(1)

它就像我想做的事情的魅力。当我观察到脚本被超越时,PID的上升非常高。

示例输出:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
foo()
module name: __main__
parent process: 1104
process id: 4805
bar
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
foo()
module name: __main__
parent process: 1104
process id: 4806
bar

然而,通过top看到的PID不会改变:

 1104 x3         20   0 60060 18252  8560 S  0.7  1.9  0:20.55 │           └─ python3 clockMatrix7219.py
 1109 x3         20   0 60060 18252  8560 S  0.0  1.9  0:00.00 │              ├─ python3 clockMatrix7219.py
 1108 x3         20   0 60060 18252  8560 S  0.0  1.9  0:00.00 │              ├─ python3 clockMatrix7219.py
 1107 x3         20   0 60060 18252  8560 S  0.0  1.9  0:00.00 │              ├─ python3 clockMatrix7219.py
 1106 x3         20   0 60060 18252  8560 S  0.0  1.9  0:00.00 │              └─ python3 clockMatrix7219.py

clockMatrix7219.py是脚本的名称。

我的问题是:这在未来会不会有问题?会有限制吗?因为该脚本旨在始终运行。此外,每个进程仅运行几分之一秒,然后完成。

多谢!

这得到了零响应,但我想出了如何避免每个循环都跨越新进程。

我只是将while loop放在函数中。

import multiprocessing
import os
def info(title):
    print("~"*50)
    print(title)
    print('module name:', __name__)
    print('parent process:', os.getppid())
    print('process id:', os.getpid())
def foo():
    while True:
        info("foo()")
        print("bar")
if __name__ == '__main__':
    p = multiprocessing.Process(target=foo)
    p.start()
    p.join()
    time.sleep(1)

相关内容

  • 没有找到相关文章

最新更新