0
私は次のことをしようとしています。ページからいくつかの情報を取得し、それをmongodbに挿入します。ページの一覧があり、これらのページが読み込まれるまでに時間がかかる可能性があるため、マルチプロセッシングを行いたいと思っています。 webdriverが結果を返すと、私はdbに挿入したい。私が直面している問題は、私がDBで期待している結果の1/4しか得ていないことです。その結果を管理し、挿入がうまくいかないと想像しています。誰かが私が間違っている場所を私に見せることを望んでいた。以下はコードの例です:マルチプロセッシングpython pymongo
from multiprocessing.dummy import Pool
from multiprocessing import cpu_count
from selenium import webdriver
import timeit
from pymongo import MongoClient
def mp_worker(urls):
driver = webdriver.Chrome(chromedriver,
chrome_options=options)
url = "http://website"+urls
driver.get(url)
return what_you_want
driver.quit() #do I do this here, close or quit?
def mp_handler():
urls= ["14360705","4584061","13788961","6877217","13194596","13400479","9868014","8524704","16394198","16315464"]
client = MongoClient()
db = client.test
collection = db['test-collection']
p = Pool(cpu_count()*2)
for result in p.imap(mp_worker, urls):
db.restaurants.update(result,{"upsert":"True"})
if __name__=='__main__':
start = timeit.default_timer()
mp_handler()
stop = timeit.default_timer()
print (stop - start)
撤去しているすべてのページがデータを返すことを確認しましたか?それらの1/4だけが実際に何かを返すかもしれない。 – elena
はい私はそれを巡回するためにforループを使用して私が完全な結果を得る – FancyDolphin