• 목록
  • 아래로
  • 위로

안녕하세요??

 

주말 잘 보내고 계시는가요?? ^-^

 

from concurrent.futures import ThreadPoolExecutor을 이용하여 다수의 이미지를 크롤링하는 경우에 대해 질문 드립니다.

 

def down_file(url, s, name, dir):
    r = s.get(url)
    if r.status_code == 200:
        filename = dir + '\\' + name
        print(filename)
        with open(filename, 'wb') as f:
            f.write(r.content)
    return s

with ThreadPoolExecutor(max_workers=8) as executor:
    for p in prvs:
        href = p.find('a')['href']
        url =  'URL을 입력하세요' + href
        html = s.get(url).content
        soup = BeautifulSoup(html, 'html5lib')
        a_tags = soup.find('div', {'id':'galerie-listing-photos'}).find_all('a')
        for a in a_tags:
            url = 'URL을 입력하세요' + a['href']
            name = url.split('/')[-1]
            executor.submit(down_file, url, s, name, dir)

 

이와 같이 with 문을 사용하여 실행을 해봤고, 아래와 같이 with 문을 사용하지 않고 실행을 해봤어요~!

 

 

# 다운로드 함수 생략

pool = ThreadPoolExecutor(max_workers=8)
for p in prvs:
    href = p.find('a')['href']
    url =  'URL을 입력하세요' + href
    html = s.get(url).content
    soup = BeautifulSoup(html, 'html5lib')
    a_tags = soup.find('div', {'id':'galerie-listing-photos'}).find_all('a')
    for a in a_tags:
        url = 'URL을 입력하세요' + a['href']
        name = url.split('/')[-1]
        pool.submit(down_file, url, s, name, dir)

 

 

그런데 전자가 후자보다 다운로드 받은 파일 수가 더 많은데요 ㅠㅠ

 

후자에서 어떤 문제가 발생한 것 같은데 무엇 때문에 이러한 문제가 발생했는지 여쭤봅니다.

 

with 문으로 사용하지 않으면 스레드 간에 충돌이 발생하는건가요??

 

 

그럼 비 조심하시고 편안한 주말 되세요 :)

 

항상 감사드려요!! ^^

 

작성자
이니스프리 119 Lv. (0%) 1973520/115200000EXP

Make StudyForUs Great Again!

 

CSVpuymXAAAVVpd.jpg

댓글 4

title: 황금 서버 (30일)humit
profile image
+1
https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Executor.shutdown
이 내용이 도움이 되실 거 같네요.
comment menu
2020.08.09. 23:36

신고

"humit님의 댓글"

이 댓글을 신고 하시겠습니까?

이니스프리 작성자 → humit
profile image
humit 님 안녕하세요??
번번이 큰 도움을 주셔서 정말 감사합니다!!

공식문서를 읽는 습관을 들여야 된다는 생각은 늘 하는데...
이번에도 제가 깜빡했네요 ㅠㅠㅠㅠㅠ

제가 제대로 이해했는지 모르겠지만 Executor 인스턴스를 shutdown 하지 않으면
어디에선가 꼬이는가 보군요 ㅜㅜ
구글링해봐도 with 문을 사용하는 경우가 대부분이네요!

병렬작업 실행은 잘 작성하면 정말 효율적인데 저한테는 아직 어렵네요 ㅠㅠ
제가 구매한 서적들에는 이 부분을 제대로 다루지 않던데 어떻게든 더 공부를 해봐야겠어요~
그럼 humit 님께서도 좋은 오후 되시고 태풍이 온다던데 피해가 없으시길 기원할게요!
항상 감사드려요!
comment menu
2020.08.10. 13:41

신고

"이니스프리님의 댓글"

이 댓글을 신고 하시겠습니까?

title: 황금 서버 (30일)humit → 이니스프리
profile image
+1
좀더 상세하게 말씀드리자면 shutdown 메서드를 사용하지 않으면 메인 프로세스가 종료된 경우 Executor에 들어온 작업이 실행이 끝날 때까지 대기하는 것이 아니라 바로 종료가 되게 됩니다. 그래서 두 번째 경우에 실행되다가 중간에 종료가 되어서 개수가 적은 것이라고 생각하시면 됩니다.
comment menu
2020.08.11. 23:08

신고

"humit님의 댓글"

이 댓글을 신고 하시겠습니까?

이니스프리 작성자 → humit
profile image
앗 그런 과정에서의 차이가 발생하여 결과가 달라지는 것이군요~ ^-^
정말 감사합니다!!
덕분에 또 많이 배웠네요 :)
그럼 humit 님께서도 비 조심하시고 굿밤 되세요!
comment menu
2020.08.11. 23:18

신고

"이니스프리님의 댓글"

이 댓글을 신고 하시겠습니까?

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 24.02.11.17:21 968
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 23.01.14.02:23 4643
공지 [필독] 질문하는 방법 17 마스터 18.02.23.03:09 4479
266 [해결함] [스포어]지속적인 반달리즘적 행위 때문에 DB를 4월 이전으로 되돌리고싶습니다. 260578 18.04.29.19:07 443
265 [해결됨]별칭 도메인 관련해서 질문 다시 올립니다 8 260578 18.09.29.20:43 198
264 [해결됨][미디어위키] 로그인 문제가 있습니다. 5 260578 18.09.02.15:32 210
263 [해결][CURL/PHP] 스터디포어스서버에서의 PHP CURL에 대한 특정 서버의 잘못된 응답에 대하여 3 Hanam09 20.02.27.15:36 309
262 [해결] 미디어위키에서 문단 목록 번호를 매길 수 있게 설정하는 방법 없을까요? 8 은하수 22.11.20.19:11 321
261 [해결] 미디어위키 단축 주소 설정에 관한 궁금한 점이 있습니다. 11 은하수 22.11.22.01:52 390
260 [파이썬]완전제곱수 5 초보 21.02.17.10:23 236
259 [파이썬] 윈도우에서 pip install로 모듈 설치시에 문제가 발생하는 것과 관련하여 질문 드립니다 2 이니스프리 19.12.29.00:51 248
258 [파이썬] 윈도우에서 datetime 객체의 invalid format string 에러 3 이니스프리 20.03.04.15:52 1488
257 [파이썬] 웹 페이지 크롤링 시 조건에 따라 보여졌다 안보여지는 class를 조건문으로 사용 하고 싶은데요.. 4 위돈톡애니모 20.02.25.15:19 1333
256 [파이썬] 소용돌이(?) 코딩이 어렵네요 ㅠㅠ 6 image 이니스프리 20.02.14.22:06 2610
255 [파이썬] 롯데백화점 크롤링과 관련하여 질문을 드립니다 2 image 이니스프리 19.12.04.21:56 264
254 [파이썬] 결과를 print 문으로 출력하는 것과 파일로 출력하는 것과 결과가 왜 다른가요? 8 image 이니스프리 19.12.25.13:19 770
253 [파이썬] Temporary failure in name resolution에 대해 여쭤봅니다 2 이니스프리 20.02.25.11:50 987
[파이썬] concurrent.futures에서 ThreadPoolExecutor의 사용과 관련하여 질문 드립니다 4 이니스프리 20.08.09.14:16 85
251 [질문] 제이쿼리처럼 자주 사용하거나, 유용한 라이브러리가 또 있을까요? 5 JAVA 17.11.13.10:26 210
250 [질문] 오라클 클라우드 사용에 문제가 있습니다. 2 해피보이 21.05.15.21:59 660
249 [자바스크립트] 브라우저의 활성화 여부를 서버 측에서 확인할 수 있는가요?? 9 이니스프리 20.05.26.17:16 459
248 [우분투] 크롬에서 일부 글자가 꺠져서 나옵니다. 3 image 국내산라이츄 18.07.27.22:55 197
247 [완전긴급] 블루투스 헤드셋이 이상합니다. 4 국내산라이츄 17.10.27.17:04 257