0
votes

Exécuter plusieurs fonctions simultanément python

J'essaie de créer un script qui recherchera un fichier CSV. Si la ligne de la CSV rencontre une certaine condition, il exécutera un tandis que TRUE: boucle code>, c'est-à-dire que cela ne finira jamais. Cependant, je veux exécuter cette fonction pour plusieurs rangées de la CSV en même temps.

with open('list.csv', "rt") as csvfile:
        reader = csv.DictReader(csvfile)
        for row in reader:
            if row['Name'] == "x":
                doSomething()
            else:
                print("Not available")


1 commentaires

Démarrez un thread pour Dosomething sur chaque ligne. Regardez dans le module filetage


3 Réponses :


0
votes

Je pense que votre besoin est le filetage xxx


0 commentaires

0
votes

Vous pouvez essayer quelque chose comme ceci: xxx


0 commentaires

0
votes

Démarrage d'un fil pour chacun pour chacun n'est pas une bonne idée (si vous avez de nombreuses lignes). Vous pouvez configurer une piscine de fil à l'aide du module code> multiprocessionnaire code>. Voici un exemple que j'ai cuit à l'aide de la documentation Python 3 et de votre code. J'espère que cela aide. Vous pouvez mettre votre code dans la fonction recherche code>. Cela peut être fait sûrement mieux, mais cela fonctionne et démarre un nombre contrôlé de threads (8 comme vous pouvez le constater).

import multiprocessing
import csv


def search(cond):
    print("evaluating ", cond)


def calculate(func, args):
    result = func(*args)
    return "%s says that %s%s = %s" % (
        multiprocessing.current_process().name,
        func.__name__,
        args,
        result,
    )


def calculatestar(args):
    return calculate(*args)


if __name__ == "__main__":
    multiprocessing.freeze_support()
    multiprocessing.set_start_method("spawn")

    with multiprocessing.Pool(8) as pool:
        TASKS = []
        with open("list.csv", "rt") as csvfile:
            reader = csv.DictReader(csvfile)
            TASKS = [(search, (row["Name"],)) for row in reader]

        results = pool.imap(calculatestar, TASKS)
        for x in results:
            print(x)


0 commentaires