具有无限While循环的Python多处理池

时间:2019-05-29 18:48:33

标签: python process multiprocessing pool

我正在尝试运行一个无限的while循环,该循环将调用进行API调用的函数。每个API调用可能需要9到12秒,并且我希望x进程持续运行。

我已经尝试了一些现有的池示例,但是它们似乎带有一个函数以及一个参数列表。我的函数会生成所有需要的输入。

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)]

1 个答案:

答案 0 :(得分:0)

您应该使用Pool

from multiprocessing import Pool
pool = Pool(processes=2) # define number of processes
results = [pool.apply(loop_a) for x in range(2)]