Rumah >pembangunan bahagian belakang >Tutorial Python >Bilakah Saya Perlu Menggunakan `ThreadPool` Tanpa Dokumen Python untuk Pemprosesan Selari?

Bilakah Saya Perlu Menggunakan `ThreadPool` Tanpa Dokumen Python untuk Pemprosesan Selari?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-12 17:45:15156semak imbas

When Should I Use Python's Undocumented `ThreadPool` for Parallel Processing?

Penggabungan Berasaskan Benang dalam Berbilangpemprosesan

Modul berbilangpemprosesan menawarkan kelas "Pool" yang berkuasa untuk menyelaraskan tugas menggunakan proses berasingan. Walau bagaimanapun, pendekatan ini menanggung overhed disebabkan penciptaan proses. Untuk operasi terikat IO dengan GIL yang dikeluarkan semasa panggilan fungsi sebenar, menggunakan benang boleh menghasilkan prestasi yang lebih baik.

Memperkenalkan Kelas ThreadPool

Bertentangan dengan kepercayaan popular, modul multiprocessing sememangnya menyediakan antara muka kolam berasaskan benang. Permata tersembunyi ini, boleh diakses melalui import multiprocessing.pool ThreadPool, menawarkan cara yang mudah untuk menyelaraskan tugasan menggunakan benang.

Walaupun statusnya tidak didokumenkan, kelas ThreadPool melaksanakan antara muka kolam berbilang pemprosesan menggunakan kelas Proses dummy yang membalut python benang. Kelas Proses dummy ini terdapat dalam modul multiprocessing.dummy, yang menawarkan keseluruhan antara muka berbilang pemprosesan berdasarkan urutan.

Contoh Penggunaan

Serupa dengan ProcessPool, ThreadPool boleh digunakan untuk menyelarikan peta fungsi:

import multiprocessing.pool

def long_running_func(p):
    c_func_no_gil(p)

p = multiprocessing.pool.ThreadPool(4)
xs = p.map(long_running_func, range(100))

Nota: Kelas ThreadPool tidak secekap ProcessPool untuk semua kes, terutamanya apabila tugas memerlukan masa CPU yang ketara.

Atas ialah kandungan terperinci Bilakah Saya Perlu Menggunakan `ThreadPool` Tanpa Dokumen Python untuk Pemprosesan Selari?. 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