나는 Beautiful Soup을 사용하여 웹 사이트를 데이터 마이닝하고있다. 첫 번째 페이지는 Scoutmob's map으로, 각 도시를 잡고 페이지를 열고 해당 도시의 각 거래 URL을 가져옵니다.파이썬 작성자 작업 큐
현재 스레드를 사용하지 않고 모든 것이 순차적으로 처리되고 있습니다. 약 500 개의 거래 (모든 도시에서)에 대해 내 프로그램은 현재 약 400 초가 걸립니다.
실습을 위해 스레딩을 사용하도록 코드를 수정하고 싶습니다. 파이썬에서 큐를 생성하는 방법에 대해 tutorials and examples을 읽었지만 500 개의 스레드를 작성하여 500 개의 URL을 처리하고 싶지 않습니다.
대신 모든 URL을 처리하기 위해 약 20 개의 (작업자) 스레드를 생성하려고합니다. 누가 20 개의 스레드가 대기열에서 500 개의 URL을 처리 할 수 있는지 예제를 보여줄 수 있습니까?
각 작업자가 큐에서 처리되지 않은 URL을 가져오고 데이터 마인이 처리되지 않은 다른 URL에서 작업하도록합니다. 각 작업자는 큐에 더 이상 URL이 없을 때만 종료됩니다.
한편, 각 작업자는 데이터 마이닝이지만 데이터베이스에 내용을 씁니다. 따라서 데이터베이스에 스레딩 문제가있을 수 있지만 다른 날의 또 다른 질문입니다 .-).
미리 감사드립니다.
"나는 각 근로자가 처리되지 않은 큐에서 URL 및 데이터 광산, 다음 번 완료를 잡고 싶다"답변입니다 :
이 출력을 얻을 수 있습니다. 너는 무엇을 더 알고 싶니? 대기열의 get 메소드를 사용하는 방법을 묻고 있습니까? –대기열에 더 이상 항목이 없을 때까지 스레드가 "열린"상태를 유지하는 방법이 아닌 것 같아요. 먼저 대기열을 완전히 채워야하나요, 그래서 내가 대기열에 "실시간"회의를 만들 수 있습니까? 그리고 스레드가 멈추라 말할 때까지 계속 작동합니까? – hobbes3
질문을 이해할 수 없습니다. 대기열이 비어있을 때 스레드가 마술처럼 멈추는 것으로 가정하고 있습니까? 왜 그들은 그렇게 할 것인가? –