[英]Python Multiprocessing Pool With Infinite While Loop
我試圖運行一個無限的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)]
你應該使用Pool
from multiprocessing import Pool
pool = Pool(processes=2) # define number of processes
results = [pool.apply(loop_a) for x in range(2)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.