不處理名單我有這樣的腳本來處理某些URL並行:多pool.map爲了
import multiprocessing
import time
list_of_urls = []
for i in range(1,1000):
list_of_urls.append('http://example.com/page=' + str(i))
def process_url(url):
page_processed = url.split('=')[1]
print 'Processing page %s'% page_processed
time.sleep(5)
pool = multiprocessing.Pool(processes=4)
pool.map(process_url, list_of_urls)
列表是有序的,但是當我運行它,該腳本不挑從網址列表爲了:
Processing page 1
Processing page 64
Processing page 127
Processing page 190
Processing page 65
Processing page 2
Processing page 128
Processing page 191
而是,我想先處理頁面1,2,3,4,然後繼續按照列表中的順序。有沒有這樣做的選擇?
你是說你想將任務分解到多個內核,但仍然按順序運行嗎?或者,您想要按正確順序處理已處理的網址的輸出列表。你的問題建議第一個。 –
第一個。就像你會在下載管理器中設置「最大並行下載」一樣,但它們仍然按順序運行。我想要處理4個URL,例如:從1,2,3,4開始。如果3完成並且1,2,4仍在運行,請啓動第5個(http://example.com/page=5) – Hyperion
但是,如果您的輔助函數具有返回值,則返回值的結果列表的順序對應於輸入參數列表的順序。即使工作人員的功能是無序處理的。 – elcombato