Le multitraitement fournit une classe Pool puissante pour paralléliser les tâches à l'aide de processus distincts. Pour les tâches impliquant des opérations liées aux E/S, la création de processus peut introduire une surcharge inutile. Cela soulève la question :
Le module multitraitement offre une solution à ce dilemme, même si elle reste quelque peu cachée et sous-documentée. Pour accéder à un mécanisme de pooling basé sur les threads, importez la classe ThreadPool depuis multiprocessing.pool :
from multiprocessing.pool import ThreadPool
En coulisses, ThreadPool utilise une classe Process simulée qui encapsule les threads Python. Cette classe Process réside dans le module multiprocessing.dummy, fournissant une interface multitraitement complète basée sur les threads.
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
En utilisant cette alternative basée sur les threads, vous pouvez exécuter de manière transparente des tâches liées aux E/S en parallèle sans surcharge. de création de processus. Libérez la puissance des pools de threads dans vos applications Python en adoptant ce joyau caché dans la classe multiprocessing.pool.ThreadPool du module multitraitement.
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!