2017-09-28 1 views
0

병렬 처리중인 여러 개의 대량 csv 파일이 있습니다. 에 대한 진행률 표시 줄을 각각 파일로 만들고 싶습니다.다중 tqdm 진행률 표시 막대를 사용하는 다중 처리

그러나 5 개의 막대가 표시되는 동안 마지막 단계 만 업데이트됩니다. 한 번에 모든 프로세스에 의해 겉으로보기에. 전체 csv 파일을 메모리로 읽을 수 없으므로 파일 크기를 사용하여 진행 상황을 표시하고 있습니다.

inputArg는 숫자로 끝나는 폴더 경로입니다.

def worker(inputArg): 
     with open(inputArg + '/data.csv') as csvfile: 
       size = os.path.getsize(inputArg + '/data.csv') 
       text = "progresser #{}".format(inputArg[-1]) 
       pb = tqdm(total=size, unit="B", unit_scale=True, desc=text, position=int(inputArg[-1])) 
       reader = csv.reader(csvfile, delimiter=',') 
       for row in reader: 
         pb.update(len(row)) 
         session.execute(*INSERT QUERY*) 

    def scheduler(inputData): 
      p = multiprocessing.Pool(multiprocessing.cpu_count()+1) 
      p.map(worker, inputData) 
      p.close() 
      p.join() 

    if __name__ == '__main__': 
      folders = glob.glob('FILEPATH/*') 
      print ('--------------------Insert started---------------') 
      scheduler(folders) 
      print('---------------------All Done---------------------') 

어떤 힌트라도 환영합니다!

EDIT : 다른 답변을 확인했지만 명시 적으로 여러 진행률 표시 줄이 필요하며 그 대답은 오직 하나만 제공합니다. 그러므로, 이것은 중복이 아닙니다.

EDIT2 : @bouteillebleu처럼 보이지만 바가 생기지 만 어떤 이유로 마지막 바가 업데이트됩니다. Current progress bars

+0

가능한 복제 (https://github.com/tqdm/tqdm/releases를 참조 v4.18.0 이상) tqdm의 최신 버전을 사용해보십시오 [파이썬에서 여러 과정을 통해 tqdm 사용하는 방법?] (https://stackoverflow.com/questions/ 43064054/how-to-use-tqdm-through-multi-process-in-python) – Sraw

+0

https://stackoverflow.com/questions/45742888/tqdm-using-multiple-bars 어떤 도움이됩니까? 각 막대가 표시되는 위치를 선택할 수있는 것처럼 보이므로 처리 된 CSV 각각에 대해 다른 결과를 볼 수 있습니다. – bouteillebleu

+0

@bouteillebleu 코멘트 주셔서 감사합니다! 나는 그림을 추가했습니다. 이미 위치 매개 변수를 사용하고 있기 때문에 다른 막대를 얻었습니다. 그냥 업데이 트가 glitchy 보인다? – Illuminae

답변

관련 문제