이 영역을 누르면 첫 페이지로 이동
StudyDiary 블로그의 첫 페이지로 이동

StudyDiary

페이지 맨 위로 올라가기

StudyDiary

Tqdm과 멀티프로세싱

  • 2021.07.26 16:58
  • 회고/Today I Learned

파이썬 코드에서 샘플링 부분이 성능이 나오지 않아 멀티프로세싱을 사용해 이를 해결하고자 했다.
처음에는 다음과 같이 코드를 작성했다.

from multiprocessing as mp
if n_workers = =1:
    samples = list(map(sampler.sample, densities))
else:
    with mp.Pool(n_workers) as pool:
        samples = pool.map(sampler.sample, densities)

파이썬의 multiprocessing 라이브러리에서 Pool을 사용할 때 worker의 개수가 하나일때도 process를 생성해 pool을 사용하지 않은 경우보다 성능저하가 있었다. 무시해도 될 수준이지만 이 부분을 분기문을 통해 처리했다.

하지만 위와 같이 코드를 작성하니, 기존 코드에서 사용되었던 progress bar를 사용하기 어려웠다.
이에 대해서 찾아보니, tqdm에서 이미 파이썬 concurrent 라이브러리를 포팅해서 병렬처리와 그에 대한 progress_bar처리를 구현해 놓았었다.
이를 활용해 위 코드는 아래와 같이 변경했다.

from tqdm.contrib.concurrent import process_map
samples = process_map(sampler.sample, densities, max_workers=n_cpus)

tqdm의 process_map은 worker가 하나일때도 큰 성능저하 없이 동작하였다.

저작자표시 (새창열림)

'회고 > Today I Learned' 카테고리의 다른 글

리눅스와 도커 - Cgroups  (0) 2021.06.20
리눅스와 도커 - namespace  (0) 2021.06.13

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 리눅스와 도커 - Cgroups

    리눅스와 도커 - Cgroups

    2021.06.20
  • 리눅스와 도커 - namespace

    리눅스와 도커 - namespace

    2021.06.13
다른 글 더 둘러보기

정보

StudyDiary 블로그의 첫 페이지로 이동

StudyDiary

  • StudyDiary의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (10)
    • Machine Learning (2)
      • PR113 (1)
    • 회고 (3)
      • 일주일 회고 (0)
      • Today I Learned (3)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 리눅스
  • PR113
  • 도커
  • gnn
  • combinatorial optimization
  • til
  • ml4co
  • TSP

나의 외부 링크

정보

Understand의 StudyDiary

StudyDiary

Understand

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © Understand. Designed by Fraccino.

티스토리툴바