我有以下代码:
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)