2012-09-27 3 views
1

웹 크롤러에서 작업하고 있으며 멀티 프로세싱을 사용하여 한 번에 4 페이지를 다운로드하고 처리합니다. 하지만 한 번 이상 같은 페이지를 크롤링 할 생각은 없습니다.멀티 프로세싱 환경에서 멤버십 테스트를위한 데이터 유형

다중 처리를 구현하기 전에 일련의 중재 된 URL을 유지 관리하기 위해 멤버십 테스트에 이상적이므로 Sets를 선택합니다. MultiprocessingManager는 네 개의 프로세스 사이에 공유 Set을 구현하는 데 도움이 될 수 있습니다. 그러나이 경우에는 솔기가 없습니다. 내가 원하는 무엇

manager = Manager() 
d = manager.set() 

같은 것입니다 그러나 이러한 기능은 관리자 클래스에 존재하지 않습니다.

누군가 해결 방법에 대한 아이디어가 있거나 내 문제에 대한 해결책이 있습니까?

답변

0

목록을 방문한 웹 사이트의 기본 저장소로 사용하십시오. 1) 2) 배열 값 3이있는 경우)를 확인 (4)를 방문하지 않은 경우 URL을 추가)

잠금을 해제 또는 당신이 당신의 URL을 넣을 수 있습니다 일반적인 설정을해야합니다 다른 프로세스를 만들 잠급니다. 웹 사이트 방문 여부를 확인해야하는 모든 프로세스는 대기열 또는 파이프를 통해 해당 프로세스와 대화합니다.

0

multiprocessing의 구현은 dict()이며 회원 자격 테스트에서는 set()의 기능 대체가되어야합니다.

d = manager.dict() 

# Store some values 
d['http://dr.dk'] = 1 
d['http://stackoverflow.com'] = 1 

# Do membership lookup 
if 'http://stackoverflow.com' in d: 
    print "We have visited Stack Overflow" 

if 'http://google.com' not in d: 
    print "We have not visited Google" 
:

만하면 값에 원하는대로 당신은 구성원에 대한 조회하고 싶은 URL을 저장하는 저장하기 위해 키를 사용하여