Skip to main content
 首页 » 编程设计

python之如何让函数在 Python 中作为子进程运行

2025年05月04日19hnrainll

我希望我的 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)) 

感谢您的建议。正确地表述问题,从而进行适当的网络搜索对我来说有点困难。

请您参考如下方法:

使用 multiprocessing module :

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 命令,除了它将任务分包给工作池。