Pemprosesan berbilang menyediakan kelas Pool yang berkuasa untuk menyelaraskan tugas menggunakan proses berasingan. Untuk tugasan yang melibatkan operasi terikat IO, penciptaan proses boleh memperkenalkan overhed yang tidak perlu. Ini menimbulkan persoalan:
Modul berbilang pemprosesan menawarkan penyelesaian kepada dilema ini, walaupun ia masih agak tersembunyi dan tidak didokumentasikan. Untuk mengakses mekanisme pengumpulan berasaskan benang, import kelas ThreadPool daripada multiprocessing.pool:
from multiprocessing.pool import ThreadPool
Di sebalik tabir, ThreadPool menggunakan kelas Proses olok-olok yang merangkum benang Python. Kelas Proses ini berada dalam modul multiprocessing.dummy, menyediakan antara muka berbilang pemprosesan yang komprehensif berdasarkan urutan.
python def __enter__(self): assert not self._running self._running = True self._target_thread = threading.Thread(target=self._target, args=self._args, kwargs=self._kwargs) self._target_thread.start() return self def __exit__(self, *excinfo): assert self._running self.Process._exiting = True self._target_thread.join() self._running = False
Dengan menggunakan alternatif berasaskan benang ini, anda boleh melaksanakan tugas terikat IO dengan lancar secara selari tanpa overhed penciptaan proses. Lepaskan kuasa kumpulan threading dalam aplikasi Python anda dengan merangkul permata tersembunyi ini dalam kelas multiprocessing.pool.ThreadPool modul multiprocessing.
Atas ialah kandungan terperinci Bolehkah Modul `multiprocessing` Python Menawarkan Penggabungan Berasaskan Benang untuk Tugasan IO-Bound yang Lebih Pantas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!