簡體   English   中英

Python無處理循環的多處理池

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM