Python 具有无限 While 循环的多处理池
Python Multiprocessing Pool With Infinite While Loop
我正在尝试 运行 一个无限 while 循环,该循环将调用一个进行 API 调用的函数。每个 API 调用可能需要 9-12 秒,我希望 x 个进程持续 运行ning。
我尝试了一些现有的池示例,但它们似乎带有一个函数以及一个参数列表。我的函数生成所有需要的输入。
from multiprocessing import Process
from random import randint
from time import sleep
def loop_a():
while 1:
wait = randint(5,9)
print("now waiting" + str(wait) + " seconds")
sleep(wait)
if __name__ == '__main__':
#Initialize two separate while loops that can call/wait for responses independently
Process(target=loop_a).start()
Process(target=loop_a).start()
我从另一个问题中找到的这个示例代码主要解决了我的问题,但我想知道是否有一种优雅的方法来定义一次 运行 有多少个进程。我希望能够将进程数作为参数输入,而不是为每个进程定义一个新行。有什么好的方法可以做到这一点吗?
这段代码似乎解决了我面临的问题。
if __name__ == '__main__':
[Process(target=loop_a).start() for x in range(2)]
你应该使用Pool
from multiprocessing import Pool
pool = Pool(processes=2) # define number of processes
results = [pool.apply(loop_a) for x in range(2)]
我正在尝试 运行 一个无限 while 循环,该循环将调用一个进行 API 调用的函数。每个 API 调用可能需要 9-12 秒,我希望 x 个进程持续 运行ning。
我尝试了一些现有的池示例,但它们似乎带有一个函数以及一个参数列表。我的函数生成所有需要的输入。
from multiprocessing import Process
from random import randint
from time import sleep
def loop_a():
while 1:
wait = randint(5,9)
print("now waiting" + str(wait) + " seconds")
sleep(wait)
if __name__ == '__main__':
#Initialize two separate while loops that can call/wait for responses independently
Process(target=loop_a).start()
Process(target=loop_a).start()
我从另一个问题中找到的这个示例代码主要解决了我的问题,但我想知道是否有一种优雅的方法来定义一次 运行 有多少个进程。我希望能够将进程数作为参数输入,而不是为每个进程定义一个新行。有什么好的方法可以做到这一点吗?
这段代码似乎解决了我面临的问题。
if __name__ == '__main__':
[Process(target=loop_a).start() for x in range(2)]
你应该使用Pool
from multiprocessing import Pool
pool = Pool(processes=2) # define number of processes
results = [pool.apply(loop_a) for x in range(2)]