2017-09-28 5 views
0

J'ai plusieurs fichiers csv massifs que je suis en train de traiter en parallèle. Je voudrais avoir une barre de progression pour chaque fichier.Multiprocessing avec plusieurs barres de progression tqdm

Cependant, alors que j'affiche 5 barres, seule la dernière est mise à jour - apparemment par tous les processus à la fois. Comme je ne peux pas lire tout le fichier CSV en mémoire, j'utilise la taille de fichier pour afficher la progression. InputArg est le chemin du dossier se terminant par un nombre.

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---------------------') 

Un indice serait apprécié!

EDIT: J'ai vérifié l'autre réponse, mais j'ai explicitement dit que je voulais plusieurs barres de progression, et cette réponse ne vous donne qu'un. Par conséquent, ce n'est pas un doublon.

EDIT2: Voici à quoi ça ressemble @bouteillebleu, je reçois mes barres, mais seule la dernière est mise à jour pour une raison quelconque. Current progress bars

+0

double possible de [Comment utiliser tqdm à travers le processus à plusieurs en python?] (Https://stackoverflow.com/questions/ 43064054/comment utiliser-tqdm-through-multi-process-in-python) – Sraw

+0

Est-ce que https://stackoverflow.com/questions/45742888/tqdm-using-multiple-bars est-il utile? Il semble que vous puissiez choisir la position à laquelle chaque barre est affichée, ce qui permettrait de voir des résultats différents pour chacun des CSV traités. – bouteillebleu

+0

@bouteillebleu Merci pour le commentaire! J'ai ajouté une image - comme j'utilise déjà le paramètre de position, j'obtiens les différentes barres. Juste la mise à jour semble glitchy? – Illuminae

Répondre