Maison >développement back-end >Tutoriel Python >Python multi-threading et multi-processus : analyse de cas pratiques, maîtriser les compétences applicatives de la programmation concurrente
1. Multi-threading
Multiple Threads est une technologie de programmation simultanée qui permet à un programme d'effectuer plusieurs tâches en même temps. Dans Python, vous pouvez utiliser le module de threading pour créer et gérer des threads. Les threads partagent l'espace mémoire du programme, afin que les données puissent être partagées facilement. Cependant, la programmation multithread présente également certains défis, tels que des problèmes de thread de sécurité et des problèmes de verrous morts .
2. Multi-processus
Le multitraitement est une technique de programmation concurrency qui permet à un programme d'effectuer plusieurs tâches en même temps. En Python, vous pouvez utiliser le module multitraitement pour créer et gérer des processus. Le processus est indépendant de l'espace mémoire du programme, il n'y a donc aucun problème de sécurité des threads. Cependant, la programmation multi-processus présente également certains défis, tels que des problèmes de communication et de synchronisation inter-processus.
Exigences : Il existe un dossier contenant 1 000 images et chaque image doit être traitée, y compris le redimensionnement, la netteté et l'ajout de filigranes.
Solution :Le multithreading peut être utilisé pour accélérer le traitement des images. Les étapes spécifiques sont les suivantes :
En utilisant le multithreading, le temps de traitement des images peut être considérablement réduit.
import threading import os from PIL import Image, ImageFilter def process_image(image_path): image = Image.open(image_path) image = image.resize((256, 256)) image = image.filter(ImageFilter.SHARPEN) image.save(image_path) def main(): # 获取图像文件列表 image_files = os.listdir("images") # 创建线程池 pool = ThreadPool(4) # 将图像处理任务分配给线程池 for image_file in image_files: pool.submit(process_image, ("images/" + image_file, )) # 等待所有线程完成任务 pool.close() pool.join() if __name__ == "__main__": main()
Exigences : Un calcul scientifique doit être effectué, impliquant un grand nombre de calculs en virgule flottante.
Solution :Plusieurs processus peuvent être utilisés pour accélérer les calculs scientifiques. Les étapes spécifiques sont les suivantes :
En utilisant plusieurs processus, le temps de calcul scientifique peut être considérablement réduit.
import multiprocessing import math def compute_pi(n): result = 0 for i in range(n): result += 4 * (-1)**i / (2*i + 1) return result def main(): # 分解科学计算任务 n = 100000000 num_processes = 4 sub_tasks = [n // num_processes] * num_processes # 创建进程池 pool = multiprocessing.Pool(num_processes) # 将子任务分配给进程池 results = pool.map(compute_pi, sub_tasks) # 等待所有进程完成任务 pool.close() pool.join() # 汇总子任务的结果 pi = sum(results) print("π =", pi) if __name__ == "__main__": main()
À travers les deux cas pratiques ci-dessus, nous avons vu la puissance puissante du multi-threading et du multi-processus dans la programmation concurrente. Dans le développement réel, nous pouvons choisir une technologie de programmation simultanée appropriée en fonction de besoins spécifiques.
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!