3 개의 드라이버 (Firefox 브라우저)가 있으며 웹 사이트 목록에 do something
이 필요합니다.다중 처리 및 셀레늄 Python
def worker(browser, queue):
while True:
id_ = queue.get(True)
obj = ReviewID(id_)
obj.search(browser)
if obj.exists(browser):
print(obj.get_url(browser))
else:
print("Nothing")
그래서 작업자 그냥 ID를 포함하고 무언가를하기 위해 브라우저를 사용하여 대기열에 액세서됩니다
나는대로 근로자가 정의되어 있습니다.
나는 worker가 id_가 정의한 웹 사이트에서 뭔가를하기 위해 브라우저를 사용하자 마자 바로 다음 브라우저에서 뭔가를하기 위해 같은 브라우저를 사용하기 시작했다. id_가 대기열에 있습니다. 그때 나는 이것을 가지고있다 :
pool = Pool(processes=3) # I want to have 3 drivers
manager = Manager()
queue = manager.Queue()
# Define here my workers in the pool
for id_ in ids:
queue.put(id_)
for i in range(3):
queue.put(None)
나는 여기에 문제가있다, 나는 그들이 수영장에 있도록 내 종업원을 정의하는 방법을 모른다. 각 드라이버마다 작업자를 지정해야하며 모든 작업자는 같은 ID의 큐를 공유합니다. 이것이 가능한가? 내가 어떻게 해?
또 다른 아이디어는 브라우저의 대기열을 작성하여 드라이버가 아무 것도하지 않으면 대기열의 id_와 함께 새로운 프로세스를 수행 할 수 있도록하는 것입니다. 하지만 저는 멀티 프로세싱에 완전히 익숙하지 않아 실제로 이것을 쓰는 방법을 모른다.
감사합니다.
왜'while' 루프가 시작되기 전에, 작업자의 브라우저를 인스턴스화하지? –
@LeviNoecker 내가 해낼거야! –
@LeviNoecker가 답변을 수락하기 위해 답변을 게시 할 수 있습니까? –