0

私は次のスクレイピング機能を既にシリアルに実装していますが、データが複数あるのでいくつかの作業を並列化します。ここで働くシリアルコードは次のとおりです。2つのスレッドで2つのURLのスクレイピング機能を実行するPython

from bs4 import BeautifulSoup as bs 
import requests 

edbURL='URL1' 
psnURL='URL2' 

def urlScraper(URL): 
    page=requests.get(URL) 
    soup=bs(page.text,'lxml') 
    l = ['base_URL'+str(i.a['href']) for i in soup.find_all('div',class_='info')] 
    return l 

edbs=urlScraper(edbURL) 
psns=urlScraper(psnURL) 

それぞれにurlScraper(URL)に2つのコールが自分自身のスレッドを取得し、並行して実行するために、私は希望のどのような、私はthreadsライブラリを使用してみましたが、唯一にいくつかの大きな厄介なintリターンを得ました次の構文:

edbs = threads.start_new_thread(urlScraper,(edbURL,)) 
psns = threads.start_new_thread(urlScraper,(psnURL,)) 

私はそれが再び、urlScraper(URL)returnとは何かを持っている図は、私は基本的に何でもについてはほとんど何も知りません。誰も助けてくれてありがとう!

+0

あなたは彼らが実際に並列に動作するので、速い、それはPythonで起こらないであろうことを期待している場合。スレッドは実際には並行して実行されません。これを参照してください:http://stackoverflow.com/questions/1697571/python-threading-appears-to-run-threads-sequentially – shiva

+0

私は実際に並列で私はサイフォンとopenmpを使用することができますか? – ThisGuyCantEven

+0

マルチプロセッシングを使用して並列処理することができます。 – shiva

答えて

-2

マルチプロセッシングは、スレッドモジュールと同様のAPIを使用して、スポーンプロセスをサポートするパッケージです。マルチプロセッシングパッケージは、スレッドの代わりにサブプロセスを使用してグローバルインタープリタロックを効果的にサイドステッピングするローカルとリモートの同時実行性を提供します。このため、マルチプロセッシングモジュールは、プログラマが与えられたマシン上で複数のプロセッサを完全に活用できるようにします。これはUnixとWindowsの両方で動作します。

https://docs.python.org/2/library/multiprocessing.html

関連する問題