如何使函数在Python中作为子进程运行?

如何使函数在Python中作为子进程运行?,python,subprocess,Python,Subprocess,我希望我的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_m

我希望我的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))
谢谢你的建议。对我来说,正确地表述问题并进行适当的web搜索有点困难。

使用:

您可能不希望为每次调用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是机器拥有的CPU或内核数。map的行为与Python内置的map命令非常相似,只是它将任务分配给工作人员池

使用:

您可能不希望为每次调用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是机器拥有的CPU或内核数。map的行为与Python内置的map命令非常相似,只是它将任务分配给工作人员池