如何在Python中同时运行n个进程

如何在Python中同时运行n个进程,python,python-2.7,multiprocessing,Python,Python 2.7,Multiprocessing,我试图同时执行n个进程。以下示例适用于外部提供的2个流程 目前,这两个进程都是硬编码的,但我需要拿出一个通用的解决方案来完成相同的任务,即同时运行n个进程 我的代码如下: import multiprocessing ''' The first process: print 'aa' The second Process: print 'BB' ''' def TR1(): print 'aaaaaaaaa' def TR2(): print 'BBBBBBBB'

我试图同时执行n个进程。以下示例适用于外部提供的2个流程

目前,这两个进程都是硬编码的,但我需要拿出一个通用的解决方案来完成相同的任务,即同时运行n个进程

我的代码如下:

import multiprocessing

'''

The first process: print 'aa'
The second Process: print 'BB'

'''

def TR1(): 
    print 'aaaaaaaaa'

def TR2(): 
    print 'BBBBBBBB'

if __name__ == '__main__':

    process_1 = multiprocessing.Process(name='process_1', target=TR1)
    process_2 = multiprocessing.Process(name='process_2', target=TR2)

    process_1.start()
    process_2.start()

谢谢你的建议

您可以在循环中生成进程,也可以使用执行器池

在现实生活中,后一种方法通常是首选方法,因为您可以限制池的大小,并方便地收集结果


如果您正在使用Python2,其中包括

如果您正在尝试学习python,我强烈建议您已经转向Python3。按照最初的时间表,Python 2已经死了;您可以清楚地看到,专家和库维护人员不愿意继续支持旧版本。不幸的是,在我正在从事的项目中,只有Python 2服务可用。在循环中启动流程如何?我不确定多处理是否支持在循环中声明流程。如果是这样,看起来所有函数(TR1()、TR2()等)也必须在for循环中创建…?那么您也需要函数的列表或生成器。感谢您为我指明方向,我将检查多处理中的工作池池池池通常将同一函数应用/映射到输入,但将输入分配给n个工人。根据你最初的问题,这不是你想要的。为什么这是公认的答案?这实际上是因为进程都是同一类型的,所以我可以使用它:def p(arg):print arg if name=='main':pool=multiprocessing.pool(None)args=['Hi','There','Whats up']r=pool.map_async(p,args)r.wait()@jan christoph terasa你能为我澄清一下吗,为什么是同一个函数?@Slam-Hmm,阅读文档,您可以使用
apply\u async
在循环中调用您的函数和参数,它们将在不阻塞的情况下进行计算。因此,如果您使用
apply_async
而不是
map
或阻塞选项,那么这个答案是可以的。