簡體   English   中英

比較多處理與扭曲的問題

[英]question comparing multiprocessing vs twisted

遇到了我要解析網站的情況。 每個站點都必須擁有自己的“解析器”,並且可能是對待Cookie / etc等的自己的方式。

我試圖讓自己進入頭腦,這將是一個更好的選擇。

選擇一:我可以創建一個多處理功能,(masterspawn)應用獲取一個輸入URL,然后依次跨越masterspawn應用中的一個進程/功能,然后處理頁面/ URL的所有設置/獲取/解析。

這種方法將運行一個主應用程序,並依次創建內部功能的多個實例。應該快速,是/否?

選擇II:我可以創建一個“ Twisted”類型的服務器,該服務器本質上會與Choice I一樣做同樣的事情。不同之處在於,使用“ Twisted”也會帶來一些開銷。 我正在嘗試將Twisted評估為“服務器”,但我不需要它來執行url的提取。

選擇三:我可以用沙皮。 我傾向於不走這條路,因為我不希望/不需要使用scrapy似乎擁有的開銷。 正如我所說的,每個目標URL都需要具有自己的解析功能以及處理cookie的功能。

我的目標是基本上使“已架構的”解決方案分布在多個框上,其中每個客戶端框與一個主服務器連接,該主服務器分配要解析的url。

感謝對此的任何評論。

-Tom

這個問題有兩個方面:並發和分發。

並發:Twisted或multiprocessing將同時執行獲取/解析作業。 我不確定您的“扭曲開銷”的前提來自哪里。 相反,由於必須生成(相對較重的)OS進程,因此多處理路徑將產生更多的開銷。 Twisteds處理並發的方式更輕巧。

分發:多重處理不會將您的獲取/解析作業分發到不同的盒子。 扭曲可以做到這一點,例如。 使用AMP協議構建工具。

我無法評論刮y,從來沒有使用過。

對於這個特定的問題,我將采用多處理-它易於使用且易於理解。 您不是特別需要扭曲,所以為什么要承擔額外的麻煩。

您可能要考慮的另一種選擇:使用消息隊列。 讓主服務器將URL放到隊列中(例如, beantalkdresque0mq ),並讓工作進程處理並處理這些URL。 您將同時獲得並發和分發:您可以在所需的任意多台計算機上運行工作程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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