在 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()
我不是 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()