tft每日頭條

 > 生活

 > python爬蟲進程和線程

python爬蟲進程和線程

生活 更新时间:2025-01-15 17:39:44

最近golang寫得多,但是采集數據還是習慣性地切換到了python。

業務需求
  1. 采集gif圖片和文字(非商業使用)
  2. 圖片去除老水印,打上新水印
  3. 生成鍊接入庫
過程

1.采集

剛開始調試、測試使用的單線程,經過2個小時,終于跑通了。覺得數據量不大,跑跑一兩個小時也采集完了,實際并沒有。超時中斷了很多次,又不得不做補償措施。前後又折騰了倆小時才跑了一小半的數據,沒跑下來的都是異常的。腦子木了。

因為要處理水印,忍住沒切換到go。

接下來一個小時不到,采用python multiprocessing

爬蟲技術:

import urllib3 as urllib from bs4 import BeautifulSoup from urllib.parse import urlencode, urlparse import multiprocessing

本機:Mac m1, conda env python3.10

采集效率比對:

單線程 444s - 丢失數據,做補償措施也隻跑了不到2/3

多進程 172s - 100%

def scrawl(): t1 = time.time() pools = multiprocessing.Pool(8) missingWords = pools.imap(parsingWord, wordsLeft) pools.close() pools.join() t2 = time.time() print("耗時:", t2 - t1)

技術細節忽略,自我總結:容易被問題套住,跳不出思維怪圈

2.圖片清洗

接上一篇文章:python pillow-GIF 去除水印并壓縮

因為gif處理流程相對複雜一點,準備在單線程基礎上增加協程并行處理能力。

記錄:

單線程:處理一張gif 耗時26s,優化業務處理流程後16s多。

協程:80張gif圖片-20多分鐘

19:29

因為是單線程發生了IO阻塞,如果時間上不着急,按隊列去理解,是可以接受的

python爬蟲進程和線程(python爬蟲多進程python單線程實現協程)1

python爬蟲進程和線程(python爬蟲多進程python單線程實現協程)2

8CPU也沒快多少,内存消耗減少了,cpu呼呼轉跟風扇似的

python爬蟲進程和線程(python爬蟲多進程python單線程實現協程)3

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved