Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Probleme parallelisation code python avec Multiprocessing pool

0 votes

J'ai un probleme a niveau de parallelisation avec multiprocessing pool en effet j'ai une fonction worker qui permet de lire un fichier texte f1 puis le rendre les lignes dans une list R (decoupage par ligne avec i est le nombre des lignes de fichiers environnement 92 lignes) puis je vais récuperer les valeurs de la liste par 2 valeurs et les enregister dans une autre liste X
donc je veux que le code soit executer en parallele a l 'aide de map ,quesque je doit faire pour que je puisse faire le parallelisme lors de la lecture ou l'enregistrement et qu'est que je dans le parametres p.map.

def worker(i):
    with open('F1.txt' , 'r') as f:
        R = [line.strip() for line in itertools.islice(f, 4,i)]
        for i, val in enumerate(R):
            X.append([val[i:i + 2] for i in range(len(val))])
    return X

if __name__ == '__main__':

    p = multiprocessing.Pool(processes=5)
    resultat = p.map(worker,range(1)) #qu est que je met ici ?
    p.close()
    p.join() 
demandé il y a 4 jours par ghailenemark (112 points)
edité il y a 2 jours par max

1 Réponse

+1 vote
 
Meilleure réponse

Ton code est inexact. En gros, il devrait faire quelque chose comme ceci :

N = 5

def worker(i):
    fp = open(...)
    for line in islice(fp, i, None, N):
        ...

pool = Pool(N)
result = pool.map(worker, range(N))

Apres, ce n'est pas forcément une bonne idée d'utiliser du multiprocessing pour faire de l'IO, mais c'est un autre sujet.

répondu il y a 4 jours par yoch (2,170 points)
sélectionné il y a 3 jours par ghailenemark

Merci beaucoup yoch ,est que tu peux me proposer une autre solution de parallelisme sachant que mon code ici est mieux détaillé

X = []
R = []

#lire le fichier F1 
with open('F1.txt' , 'r') as f:    
    #on va mettre dans la liste R le contenu de chaque ligne (qui va etre val dans le boucle) de fichier f de ligne 4 a 92
    R = [line.strip() for line in itertools.islice(f, 4,92)]

    #on va parcourir le tableau la liste R
    for i, val in enumerate(R):                   
            #on va mettre dans tab X les differents caracteres rassemblés 2 par 2 jusqu a la la fin de fichier
        X.append([val[i:i + 2] for i in range(len(val))])

le but de code est de calculer le nombre d'occurence de chaque 2 caractéres concatinés , bon je veux juste le paralellisme au niveau de lecture des lignes de fichiers et merci d'avance mon frére

...