我希望我的 Python 脚本能够将其功能之一作为子进程运行。我应该怎么做?
这是我的意图的模型脚本:
#!/urs/bin/env python
def print_mynumber(foo):
"""This function is obviously more complicated in my script.
It should be run as a subprocess."""
print(foo)
for foo in [1,2,3]:
print_mynumber(foo) # Each call of this function should span a new process.
# subprocess(print_mynumber(foo))
感谢您的建议。正确地表述问题,从而进行适当的网络搜索对我来说有点困难。
最佳答案
import multiprocessing as mp
def print_mynumber(foo):
"""This function is obviously more complicated in my script.
It should be run as a subprocess."""
print(foo)
if __name__ == '__main__':
for foo in [1,2,3]:
proc = mp.Process(target = print_mynumber, args = (foo, ))
proc.start()
您可能不希望为每次调用 print_mynumber
创建一个进程,尤其是当 foo
迭代的列表很长时。在这种情况下更好的方法是使用多处理池:
import multiprocessing as mp
def print_mynumber(foo):
"""This function is obviously more complicated in my script.
It should be run as a subprocess."""
print(foo)
if __name__ == '__main__':
pool = mp.Pool()
pool.map(print_mynumber, [1,2,3])
默认情况下,池将创建 N 个工作进程,其中 N
是机器拥有的 cpus(或核心)数。 pool.map
的行为很像 Python 内置的 map
命令,除了它将任务分包给工作池。
关于python - 如何让函数在 Python 中作为子进程运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12811349/