0
다음 작업을 수행하려고합니다. 페이지에서 일부 정보를 가져 와서 mongodb에 삽입하십시오. 페이지 목록이 있으며 이러한 페이지를로드하는 데 시간이 걸릴 수 있으므로 다중 처리를 원합니다. webdriver가 결과를 반환하면 DB에 삽입하려고합니다. 내가 직면하고있는 문제는 DB에서 기대하는 결과의 1/4 만 얻고 있기 때문에 결과를 관리하는 방식을 상상하고 삽입이 작동하지 않는다는 것을 상상해보십시오. 누군가 내가 잘못한 곳을 보여줄 수 있기를 바랬습니다. 가능성이다중 처리 파이썬 pymongo
db.restaurants.update(result,{"upsert":"True"})
당신이 원하는 :
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