Maison > Article > développement back-end > Comment utiliser le module multitraitement pour la gestion multi-processus dans Python 2.x
Comment utiliser le module multitraitement pour la gestion multi-processus dans Python 2.x
Introduction :
Avec la popularité des processeurs multicœurs et l'amélioration des performances matérielles, l'utilisation du traitement parallèle multi-processus est devenue un moyen important pour améliorer l’efficacité du programme. Dans Python 2.x, nous pouvons utiliser le module multitraitement pour implémenter la gestion multi-processus. Cet article explique comment utiliser le module multitraitement pour la gestion multi-processus.
from multiprocessing import Process def func(): # 子进程要执行的代码 print("This is a child process.") if __name__ == "__main__": # 创建子进程 p = Process(target=func) # 启动子进程 p.start() # 等待子进程结束 p.join() # 输出结果 print("This is the main process.")
Dans l'exemple de code ci-dessus, nous avons d'abord importé la classe Process, puis défini une fonction func en tant qu'enfant process Le code à exécuter. Dans la fonction principale, nous créons un objet Process p et spécifions la fonction à exécuter en tant que func via le paramètre target. Démarrez ensuite le sous-processus en appelant la méthode p.start(), puis appelez la méthode p.join() pour attendre la fin du sous-processus. Enfin, affichez le résultat.
from multiprocessing import Process def func(index): # 子进程要执行的代码 print("This is child process %d." % index) if __name__ == "__main__": # 创建多个子进程 processes = [] for i in range(5): p = Process(target=func, args=(i,)) processes.append(p) # 启动所有子进程 for p in processes: p.start() # 等待所有子进程结束 for p in processes: p.join() # 输出结果 print("This is the main process.")
Dans l'exemple de code ci-dessus, nous avons utilisé une boucle pour créer 5 sous-processus. La fonction func de chaque sous-processus reçoit un paramètre. index, qui représente le numéro du sous-processus. Lors de la création d'un processus enfant, nous transmettons le paramètre index au processus enfant via le paramètre args, afin que chaque processus enfant effectue des tâches différentes.
from multiprocessing import Process, Queue def producer(queue): # 生产者进程 for i in range(5): item = "item %d" % i queue.put(item) print("Produced", item) def consumer(queue): # 消费者进程 while True: item = queue.get() print("Consumed", item) if item == "item 4": break if __name__ == "__main__": # 创建Queue对象 queue = Queue() # 创建生产者进程和消费者进程 p1 = Process(target=producer, args=(queue,)) p2 = Process(target=consumer, args=(queue,)) # 启动子进程 p1.start() p2.start() # 等待子进程结束 p1.join() p2.join() # 输出结果 print("This is the main process.")
Dans l'exemple de code ci-dessus, nous créons un objet file d'attente via la classe Queue pour transmettre des données entre le processus producteur et le processus consommateur. Dans le processus producteur, nous utilisons la méthode put pour mettre les données dans la file d'attente ; dans le processus consommateur, nous utilisons la méthode get pour retirer les données de la file d'attente. Lorsque la file d'attente est vide, le processus consommateur se bloque automatiquement jusqu'à ce qu'il y ait des données dans la file d'attente à récupérer. Dans l'exemple de code, le processus producteur place 5 éléments dans la file d'attente, puis le processus consommateur prend les éléments de la file d'attente et les imprime. Lorsque l'article retiré est « l'article 4 », le processus de consommation se termine.
Conclusion :
L'utilisation du module multitraitement pour la gestion multi-processus peut améliorer efficacement l'efficacité d'exécution du programme. Grâce à l'introduction de cet article, les lecteurs peuvent apprendre à utiliser le module multitraitement pour créer des sous-processus, créer plusieurs sous-processus pour une exécution parallèle et implémenter la communication inter-processus. J'espère que cet article sera utile pour la programmation multi-processus dans Python 2.x.
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!