여러 프로세스를 사용하여 데이터를 크롤링하고 파일에 기록하면 실행 시 오류가 보고되지 않지만 파일을 열면 왜곡됩니다.
멀티스레딩으로 다시 작성할 때는 그런 문제가 없으며 모든 것이 정상입니다. 다음은 파일에 데이터를 쓰는 코드입니다.
여러 프로세스를 위한 프로세스 풀
사진에서 언급한 것처럼 파일이 잘못된 인코딩으로 로드되는데, 이는 여러 프로세스에서 작성할 때 인코딩이 utf-8이 아니라는 의미입니다
파일의 첫 번째 줄을 추가하세요:
동일한 파일을 여는 것은 매우 위험하며, 멀티스레딩에서 오류가 발생하지 않으면 GIL일 가능성이 가장 높으며, 여러 프로세스에는 잠금이 없으므로 오류가 발생하기 쉽습니다. 실수를 하다. 으아악 생산자-소비자 모델로 변경을 권장합니다!
이렇게
결과
foo /6/wssd_content.jsp?bookidfoo /1/wssd_content.jsp?bookidfoo /2/wssd_content.jsp?bookid foo /3/wssd_content.jsp?bookidfoo /7/wssd_content.jsp?bookidfoo /8/wssd_content.jsp?bookidfoo /9/wssd_content.jsp?bookid
사진에서 언급한 것처럼 파일이 잘못된 인코딩으로 로드되는데, 이는 여러 프로세스에서 작성할 때 인코딩이 utf-8이 아니라는 의미입니다
파일의 첫 번째 줄을 추가하세요:
으아악동일한 파일을 여는 것은 매우 위험하며, 멀티스레딩에서 오류가 발생하지 않으면 GIL일 가능성이 가장 높으며, 여러 프로세스에는 잠금이 없으므로 오류가 발생하기 쉽습니다. 실수를 하다.
으아악
생산자-소비자 모델로 변경을 권장합니다!
이렇게
으아악결과
foo /4/wssd_content.jsp?bookid
foo /5/wssd_content.jsp?bookidfoo /6/wssd_content.jsp?bookid
foo /1/wssd_content.jsp?bookid
foo /2/wssd_content.jsp?bookid
foo /3/wssd_content.jsp?bookid
foo /7/wssd_content.jsp?bookid
foo /8/wssd_content.jsp?bookid
foo /9/wssd_content.jsp?bookid