Rumah > Artikel > pembangunan bahagian belakang > Python multi-threading dan multi-process: analisis kes praktikal, kuasai kemahiran aplikasi pengaturcaraan serentak
1. Pelbagai benang
Multiple Threads ialah teknologi pengaturcaraan serentak yang membolehkan program melakukan pelbagai tugas pada masa yang sama. Dalam Python, anda boleh menggunakan modul benang untuk mencipta dan mengurus benang. Benang berkongsi ruang memori program, jadi data boleh dikongsi dengan mudah. Walau bagaimanapun, pengaturcaraan berbilang benang juga mempunyai beberapa cabaran, seperti isu keselamatan dan isu kunci mati.
2. Pelbagai proses
Pemprosesan berbilang ialah teknik pengaturcaraan konkurensiyang membolehkan program melaksanakan pelbagai tugas serentak. Dalam Python, anda boleh menggunakan modul multiprocessing untuk mencipta dan mengurus proses. Proses ini adalah bebas daripada ruang memori program, jadi tiada isu keselamatan benang. Walau bagaimanapun, pengaturcaraan berbilang proses juga memberikan beberapa cabaran, seperti komunikasi antara proses dan isu penyegerakan.
Keperluan: Terdapat folder yang mengandungi 1000 imej, dan setiap imej perlu diproses, termasuk mengubah saiz, mengasah dan menambah tera air.
Penyelesaian:Multi-threading boleh digunakan untuk mempercepatkan pemprosesan imej. Langkah-langkah khusus adalah seperti berikut:
Dengan menggunakan multi-threading, masa pemprosesan imej dapat dikurangkan dengan banyaknya.
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()
Keperluan: Pengiraan saintifik perlu dilakukan, melibatkan sejumlah besar pengiraan titik terapung.
Penyelesaian:Pelbagai proses boleh digunakan untuk mempercepatkan pengiraan saintifik. Langkah-langkah khusus adalah seperti berikut:
Dengan menggunakan pelbagai proses, masa pengiraan saintifik boleh dipendekkan dengan banyak.
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()
Melalui dua kes praktikal di atas, kami telah melihat kuasa berkuasa berbilang benang dan berbilang proses dalam pengaturcaraan serentak. Dalam pembangunan sebenar, kita boleh memilih teknologi pengaturcaraan serentak yang sesuai mengikut keperluan khusus.
Atas ialah kandungan terperinci Python multi-threading dan multi-process: analisis kes praktikal, kuasai kemahiran aplikasi pengaturcaraan serentak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!