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

execute a python method in X parallel sub-processes where x is configurable

我不是 python 专家, 我正在尝试实现主题中的功能。

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

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。

我们将不胜感激。

如果我对你的问题理解正确,你正在寻找的是 threadpool/processpool,你可以在其中定义工作人员的数量,然后与他们异步应用功能。 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)]

你的意思是你想 运行 在并行子进程中运行 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()