Maison >développement back-end >Tutoriel Python >Comment puis-je exécuter plusieurs fonctions Python en parallèle à l'aide du multitraitement ?

Comment puis-je exécuter plusieurs fonctions Python en parallèle à l'aide du multitraitement ?

DDD
DDDoriginal
2024-12-05 07:50:13448parcourir

How Can I Run Multiple Python Functions in Parallel Using Multiprocessing?

Exécuter des fonctions en parallèle : un guide du multitraitement

Concept

Le multitâche implique l'exécution de plusieurs tâches simultanément, un exploit qui peut être réalisé soit par threading, soit par multitraitement.

Multitraitement vs threading

En Python, le threading est principalement utile pour les opérations liées aux E/S. Pour les tâches gourmandes en CPU, le multitraitement offre de meilleures performances car il exploite plusieurs cœurs de processeur.

Exécution de fonctions en parallèle

Considérez le scénario suivant :

import common

dir1 = 'C:\folder1'
dir2 = 'C:\folder2'
filename = 'test.txt'
addFiles = [25, 5, 15, 35, 45, 25, 5, 15, 35, 45]

def func1():
   c = common.Common()
   for i in range(len(addFiles)):
       c.createFiles(addFiles[i], filename, dir1)
       c.getFiles(dir1)
       time.sleep(10)
       c.removeFiles(addFiles[i], dir1)
       c.getFiles(dir1)

def func2():
   c = common.Common()
   for i in range(len(addFiles)):
       c.createFiles(addFiles[i], filename, dir2)
       c.getFiles(dir2)
       time.sleep(10)
       c.removeFiles(addFiles[i], dir2)
       c.getFiles(dir2)

Pour exécuter func1 et func2 simultanément, le multitraitement doit être utilisé. Vous trouverez ci-dessous un exemple :

from multiprocessing import Process

if __name__ == "__main__":
    p1 = Process(target=func1)
    p1.start()
    p2 = Process(target=func2)
    p2.start()
    p1.join()
    p2.join()

Encapsulation de l'exécution parallèle

Le code ci-dessus peut être simplifié en une fonction qui facilite l'exécution parallèle de plusieurs fonctions :

def runInParallel(*fns):
  proc = []
  for fn in fns:
    p = Process(target=fn)
    p.start()
    proc.append(p)
  for p in proc:
    p.join()

runInParallel(func1, func2)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn