Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah saya boleh menyelaraskan gelung Python untuk Kecekapan yang Lebih Baik?

Bagaimanakah saya boleh menyelaraskan gelung Python untuk Kecekapan yang Lebih Baik?

Linda Hamilton
Linda Hamiltonasal
2024-12-05 02:02:09898semak imbas

How Can I Parallelize Python Loops for Improved Efficiency?

Menyelari Gelung Python untuk Kecekapan Dipertingkat

Dalam Python, gelung selari boleh meningkatkan prestasi dengan ketara untuk tugas terikat CPU. Untuk menyelaraskan gelung yang disediakan, yang mengira nilai menggunakan fungsi calc_stuff dan mengumpul hasil dalam senarai berasingan, terdapat dua pendekatan berkesan:

Kaedah 1: Multiprocessing

Disebabkan kepada Global Interpreter Lock (GIL) Python, menggunakan berbilang benang tidak akan menghasilkan faedah untuk tugas terikat CPU. Sebaliknya, multiprocessing ialah pilihan yang lebih sesuai.

Menggunakan modul multiprocessing, anda boleh mencipta kumpulan proses dengan berbilang proses pekerja, seperti ditunjukkan di bawah:

pool = multiprocessing.Pool(4)  # Create a pool with 4 worker processes
out1, out2, out3 = zip(*pool.map(calc_stuff, range(0, 10 * offset, offset)))

Fungsi peta menghantar setiap item dalam lelaran julat kepada proses pekerja, mengumpul hasil yang dikembalikan dan membongkarnya ke dalam out1, out2, dan out3 senarai.

Kaedah 2: Concurrent.futures Python 3.2

Satu lagi pilihan mudah untuk menyelaraskan gelung ialah menggunakan modul Concurrent.futures, yang menyediakan antara muka yang dioptimumkan untuk menggunakan benang dan kumpulan proses:

with concurrent.futures.ProcessPoolExecutor() as pool:
    out1, out2, out3 = zip(*pool.map(calc_stuff, range(0, 10 * offset, offset)))

Pendekatan ini menggunakan kumpulan proses di bawah hud, berkelakuan serupa dengan kaedah berbilang pemprosesan.

Kedua-dua kaedah membenarkan pelaksanaan selari fungsi calc_stuff pada input yang berbeza, menghasilkan masa pelaksanaan yang lebih cepat untuk gelung intensif CPU.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menyelaraskan gelung Python untuk Kecekapan yang Lebih Baik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn