在X并行子进程中执行python方法,其中x是可配置的

时间:2016-07-11 06:07:45

标签: python parallel-processing subprocess

我不是蟒蛇专家, 我试图在主题中实现功能。

我知道如何使用并行执行方法的功能。 E.g。

def main():
    run_in_parallel(A,B)

def A():
    while True:
        print("A")

def B():
    while True:
        print("B")

def run_in_parallel(*fns):
    proc = []
    for fn in fns:
        p = Process(target=fn)
        p.start()
        proc.append(p)
    for p in proc:
        p.join()

if __name__ == '__main__':
    main()

但我无法弄清楚如何在10/20/100 / ...并行子流程中执行方法A.

将不胜感激。

2 个答案:

答案 0 :(得分:3)

你的意思是你想在并行子过程中运行功能A 10/20/100 ...次?如果是,则可以创建20个子进程:

def main():
    run_in_parallel(A, 20)

def A():
    while True:
        print("A")

def run_in_parallel(fn, proc_count):
    proc = []
    for _ in range(proc_count):
        p = Process(target=fn)
        p.start()
        proc.append(p)
    for p in proc:
        p.join()

if __name__ == '__main__':
    main()

答案 1 :(得分:1)

如果我理解你的问题是正确的,你要找的是一个threadpool / processpool,你可以在其中定义worker的数量,然后只是异步地应用函数。 Python有built in。您无需打开新流程,只需使用pool.apply_async

例如:

def run_in_parallel(fn, times=10):
    pool = multiprocessing.Pool(times)
    [pool.apply_async(fn) for _ in range(times)]