我不是蟒蛇专家, 我试图在主题中实现功能。
我知道如何使用并行执行方法的功能。 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.
将不胜感激。
答案 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)]