最近在看崔慶才老師的爬蟲課程
第一節他用requests爬取貓眼電影top100,他最后用multiprocessing的Pool模塊的map方法引入多行程,將爬取結果存到了文本檔案,
但是我發現最后文本檔案的內容里,電影排序是亂序的,我在想是不是因為多行程讀寫檔案時沒有加鎖的問題,還請各位大佬幫忙看看
我貼一下主要代碼
def main(offset):
url = 'https://maoyan.com/board/4?offset=' + str(offset)
html = get_one_page(url) # 獲取單頁內容
for item in parse_one_page(html): # 決議單頁內容
print(item)
write_to_file(item)
if __name__ == '__main__':
pool = Pool()
pool.map(main, [i * 10 for i in range(10)])
我解釋一下
這里我沒有貼get_one_page()函式和parse_one_page()函式,覺得不重要。
其實就是用pool.map()產生的多個行程把main函式每次執行得到的item寫入檔案時發生了亂序問題,比如這個item還沒完全寫入,就插入著寫入了另一個item。
求大佬解釋
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/150305.html
