rendre une boucle asynchrone

a marqué ce sujet comme résolu.

bonjour

j'ai ce bout de code

1
2
3
4
5
6
7
8
9
#!/usr/bin/env python3
import fileinput
import csv 

csv_reader = csv.reader(fileinput.input())

for row  in csv_reader:
    with open(row[1], "a") as po_file:
        po_file.write("%s\n" % row[0])

que j'aimerai rendre asynchrone, y'a des manieres elegantes de faire dans les pythons modernes ?

+0 -0

Salut.

À ma connaissance il n'y a pas de wrapper équivalent au module csv qui soit compatible avec asyncio.

Par contre pour ce qui est de récupérer le contenu du fichier d'input et écrire les données dans les fichiers de sortie de façon asynchrone, la bibliothèque aiofile fait exactement le job.

Je suppose que tu peux donc :

  • Récupérer l'input de façon asynchrone avec aiofile,
  • parser celle-ci avec le module csv (quoique là, un simple split(',') sur chaque ligne semble largement suffire),
  • ouvrir les fichiers de sortie (en mode "ajout") de façon asynchrone avec aiofile,
  • écrire dedans de façon asynchrone.
+1 -0

Hello!

C'est pas vraiment ce que tu demandes, mais est-ce qu'il y a une bonne raison de ne pas passer par un thread ? Du genre

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import fileinput, csv, threading

def worker(fname, fcontent):
    with open(fname, "a") as po_file:
        po_file.write("%s\n".format(fcontent))

thds = []
csv_reader = csv.reader(fileinput.input())
for row  in csv_reader:
   thds.append(threading.Thread(target=worker, args=(row[0],row[1],)))
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte