2017-10-28 138 views
-2

我有一個需要制定一套30-40 API調用,每個揭開序幕,將需要輪詢系統狀況,然後從API檢索查詢「工作」的應用程序。每個工作都會花費不知道的時間 - 從即時到3-4分鐘。的Python的多線程「工作」

這似乎是一個偉大的地方,應用多線程模型,其中I「派遣」這些工作,然後等待所有這些處理結果之前完成。我對Python的所有可用選項感到困惑,目前還不清楚我是否應該使用concurrent.futuresasynciogreenlets

如何評估這些選項,並導致可讀性,Python的代碼選擇嗎?哪個庫是最流行和可重用的(換句話說,哪一個對我來說是一筆很好的投資)? 哪個最適合我的任務?

如何我的問題轉化爲Python的任何意見或指導3.6+,將不勝感激。

回答

2

我不太確定你在問什麼。然而,多是與Python真的很容易,如果你只需要觸發的工作,那麼下面可能會有所幫助:

import multiprocessing as mp 

def print_index(x): 
    print(x) 

jobs = [] 
for i in range(3): 
    p = mp.Process(target=print_index, args=(i,)) 
    jobs.append(p) 
    p.start() 

for job in jobs: #wait for the 3 jobs to finish... 
    job.join() 

您可以瞭解更多關於通過文檔多處理:https://docs.python.org/3/library/multiprocessing.html

+0

謝謝!我主要是在尋求幫助,理解完成多線程或多處理的「最佳」或最普遍的方式。有大量的工具可用於此,並且尚不清楚自從在3.5左右向標準庫添加「asyncio」之後哪些工具仍然相關! – esoterydactyl

+0

請勿使用asyncio。這是不值得有額外的時間來理解它。此外,我會建議在這裏線程,因爲你不是CPU綁定。 – xaav

+0

是的,多線程更合適。不知道爲什麼我有MP。 – pookie