Je souhaite lire un fichier (ce que je fais avec un bête input=readline()) et, grosso modo, le couper/traiter avec en sortie plusieurs fichiers fils. Comme on ne peut pas avoir 50 fichiers du même nom, je pense qu'il faudrait qu'ils s'appellent Fichier_1, Fichier_2 ... Fichier_n.
Comme "n" peut être assez grand dans mon cas, je voudrais automatiser cela, mais je n'ai pas encore trouvé la solution.
D'après quelques posts sur internet concernant des variables à nom dynamique, j'ai fait un test en utilisant un tableau :
for i in range(n):
tableau[i]=open('Fichier'+str(i),'w')
Mais ça n'a pas fonctionné du tout... Est-ce qu'il existe une astuce qui m'échappe ?
En fait je voulais couper un gros fichier de données d'entrée en n fichiers qui en contiennent les différents bouts (mais pas qu'une ligne), ceci dans l'objectif de faire tourner un programme n fois en parallèle.
Le fichier initial est tellement gros que le programme en question mettrait des semaines à tourner (et encore, s'il y arrive)...
Je précise aussi que mon découpage n'est pas simplement après x lignes, et donc la fonction split du terminal linux ne convenait pas.
En fait je voulais couper un gros fichier de données d'entrée en n fichiers qui en contiennent les différents bouts (mais pas qu'une ligne), ceci dans l'objectif de faire tourner un programme n fois en parallèle.
Le problème de conception est confirmé.
Si les programmes ne font pas d'écritures, rien n'empêche que plusieurs programmes lisent un seul fichier.
Sinon tu peux utiliser une base de données, ça peut être plus adapté.
Au passage, si les programmes tournent sur le même PC, lancer plusieurs fois le même programme n'a pas grand intérêt, un seul programme peut utiliser toutes les capacités de ta machine s'il est correctement conçu (threads).
Je tempèrerai ce passage à propos des threads : le GIL en Python fait que tous les threads tourneront sur le même coeur.
Ça reste efficace si les threads font surtout de l'IO, mais dans le cas où on a besoin de faire beaucoup plus de calculs que d'IO, il n'y a pas d'autre choix que de paralléliser les processus.
Cela dit, il n'y a peut-être pas besoin de lancer plusieurs instances parallèles : le module concurrent.futures permet de gérer ça de façon transparente.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Blond, bouclé, toujours le sourire aux lèvres...