Pythn에서 multipprocessing을 사용하여 병렬로 실행할 때, 모든 과정의 진도표를 tqdm로 표시합니다
4601 단어 multiprocessingtqdmPython
개요
Python에서 multipprocessing을 사용하여 병렬 처리를 실행할 때, 나는 모든 과정이 진도를 표시할 때가 있다고 생각한다.
따라서 tqdm를 사용하면 모든 과정에 술집이 표시됩니다.
참조: tqdm
목표
모든 프로세스의 독립된 진도표를 표시합니다!
Code from time import sleep
import random
from tqdm import tqdm
from multiprocessing import Pool, freeze_support, RLock
L = 8
def long_time_process(p):
info = f'#{p:>2} ' # 進捗バーの左側に表示される文字列
for _ in tqdm(range(20), desc=info, position=p+1):
sleep(random.random())
return p * 2
if __name__ == '__main__':
freeze_support() # Windows のみ必要
with Pool(L,
# Windows のみ必要
initializer=tqdm.set_lock, initargs=(RLock(),)) as p:
result = p.map(long_time_process, range(L))
print("\n" * L) # tqdm終了後のカーソル位置を最下部に持ってくる
print(result)
해설 long_time_process
: 병렬 실행하려는 함수freeze_support, initializer, initargs
: Windows만 있으면 된다고 합니다.Mac는 이것을 아껴도 문제없다.position=p+1
: 원래 포지션은 0에서 시작하기 때문에 이미지를 보여주기 위해 프로그램을 실행할 때 위에 한 줄의 공간이 있습니다.position=0에서 표시하면 맨 위에 있는 진도표가 끝날 때 전체 표시가 편차가 발생하기 때문에 여기는 1부터 시작합니다.
(보완) 포지션의 동작은 OS와 실행 시 환경에 따라 달라진다.이 근처position=p
냐position=p+1
냐, 나는 실제 시도를 한 후에 예쁘게 행동하는 것이 좋다고 생각한다.
결실
레이아웃이 변하지 않고, 진도표의 표시와 그 다음의 print 출력이 모두 가능합니다.
Reference
이 문제에 관하여(Pythn에서 multipprocessing을 사용하여 병렬로 실행할 때, 모든 과정의 진도표를 tqdm로 표시합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nkato_/items/9e2c75013d44050851ed
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
모든 프로세스의 독립된 진도표를 표시합니다!
Code from time import sleep
import random
from tqdm import tqdm
from multiprocessing import Pool, freeze_support, RLock
L = 8
def long_time_process(p):
info = f'#{p:>2} ' # 進捗バーの左側に表示される文字列
for _ in tqdm(range(20), desc=info, position=p+1):
sleep(random.random())
return p * 2
if __name__ == '__main__':
freeze_support() # Windows のみ必要
with Pool(L,
# Windows のみ必要
initializer=tqdm.set_lock, initargs=(RLock(),)) as p:
result = p.map(long_time_process, range(L))
print("\n" * L) # tqdm終了後のカーソル位置を最下部に持ってくる
print(result)
해설 long_time_process
: 병렬 실행하려는 함수freeze_support, initializer, initargs
: Windows만 있으면 된다고 합니다.Mac는 이것을 아껴도 문제없다.position=p+1
: 원래 포지션은 0에서 시작하기 때문에 이미지를 보여주기 위해 프로그램을 실행할 때 위에 한 줄의 공간이 있습니다.position=0에서 표시하면 맨 위에 있는 진도표가 끝날 때 전체 표시가 편차가 발생하기 때문에 여기는 1부터 시작합니다.
(보완) 포지션의 동작은 OS와 실행 시 환경에 따라 달라진다.이 근처position=p
냐position=p+1
냐, 나는 실제 시도를 한 후에 예쁘게 행동하는 것이 좋다고 생각한다.
결실
레이아웃이 변하지 않고, 진도표의 표시와 그 다음의 print 출력이 모두 가능합니다.
Reference
이 문제에 관하여(Pythn에서 multipprocessing을 사용하여 병렬로 실행할 때, 모든 과정의 진도표를 tqdm로 표시합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nkato_/items/9e2c75013d44050851ed
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from time import sleep
import random
from tqdm import tqdm
from multiprocessing import Pool, freeze_support, RLock
L = 8
def long_time_process(p):
info = f'#{p:>2} ' # 進捗バーの左側に表示される文字列
for _ in tqdm(range(20), desc=info, position=p+1):
sleep(random.random())
return p * 2
if __name__ == '__main__':
freeze_support() # Windows のみ必要
with Pool(L,
# Windows のみ必要
initializer=tqdm.set_lock, initargs=(RLock(),)) as p:
result = p.map(long_time_process, range(L))
print("\n" * L) # tqdm終了後のカーソル位置を最下部に持ってくる
print(result)
long_time_process
: 병렬 실행하려는 함수freeze_support, initializer, initargs
: Windows만 있으면 된다고 합니다.Mac는 이것을 아껴도 문제없다.position=p+1
: 원래 포지션은 0에서 시작하기 때문에 이미지를 보여주기 위해 프로그램을 실행할 때 위에 한 줄의 공간이 있습니다.position=0에서 표시하면 맨 위에 있는 진도표가 끝날 때 전체 표시가 편차가 발생하기 때문에 여기는 1부터 시작합니다.(보완) 포지션의 동작은 OS와 실행 시 환경에 따라 달라진다.이 근처
position=p
냐position=p+1
냐, 나는 실제 시도를 한 후에 예쁘게 행동하는 것이 좋다고 생각한다.결실
레이아웃이 변하지 않고, 진도표의 표시와 그 다음의 print 출력이 모두 가능합니다.
Reference
이 문제에 관하여(Pythn에서 multipprocessing을 사용하여 병렬로 실행할 때, 모든 과정의 진도표를 tqdm로 표시합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nkato_/items/9e2c75013d44050851ed
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Pythn에서 multipprocessing을 사용하여 병렬로 실행할 때, 모든 과정의 진도표를 tqdm로 표시합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nkato_/items/9e2c75013d44050851ed텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)