Cet article présente principalement en détail l'utilisation du pool de threads Python, qui a une certaine valeur de référence. Les amis intéressés peuvent s'y référer
Je travaille actuellement sur un projet de gestion de périphériques vidéo, les périphériques incluent (caméra). , DVR, NVR, etc.), y compris l'achèvement des informations sur l'appareil, la transmission de l'état de l'appareil, l'envoi de l'adresse du flux de l'appareil, etc. Si un grand nombre d'appareils sont importés en même temps, si un seul thread est utilisé pour la détection des appareils, alors en raison au grand nombre de périphériques S'il y en a trop, cela entraînera un retard important, pensez donc au multithreading pour gérer ce problème.
Vous pouvez utiliser le langage python pour implémenter le pool de threads vous-même, ou vous pouvez utiliser le package tiers threadpool thread pool. Cette rubrique présente principalement l'utilisation du pool de threads et son implémentation spécifique.
1.Installation
Utiliser l'installation :
pip installthreadpool
2. Utilisez
(1) Présentez le module threadpool
(2) Définissez la fonction de thread
(3) Créez un pool de threads threadpool.ThreadPool()
(4) Créer un besoin Les tâches gérées par le pool de threads sont threadpool.makeRequests()
(5) Mettez les multiples tâches créées dans le pool de threads, threadpool.putRequest
(6) Attendez que toutes les tâches soient traitées theadpool.pool ()
import threadpool def ThreadFun(arg1,arg2): pass def main(): device_list=[object1,object2,object3......,objectn]#需要处理的设备个数 task_pool=threadpool.ThreadPool(8)#8是线程池中线程的个数 request_list=[]#存放任务列表 #首先构造任务列表 for device in device_list: request_list.append(threadpool.makeRequests(ThreadFun,[((device, ), {})])) #将每个任务放到线程池中,等待线程池中线程各自读取任务,然后进行处理,使用了map函数,不了解的可以去了解一下。 map(task_pool.putRequest,request_list) #等待所有任务处理完成,则返回,如果没有处理完,则一直阻塞 task_pool.poll() if __name__=="__main__": main()
Ce qui précède est un processus d'utilisation du pool de threads spécifique
La définition spécifique du pool de threads est la suivante :
class ThreadPool: """A thread pool, distributing work requests and collecting results. See the module docstring for more information. """ def __init__(self, num_workers, q_size=0, resq_size=0, poll_timeout=5): pass def createWorkers(self, num_workers, poll_timeout=5): pass def dismissWorkers(self, num_workers, do_join=False): pass def joinAllDismissedWorkers(self): pass def putRequest(self, request, block=True, timeout=None): pass def poll(self, block=False): pass def wait(self): pass
La section suivante présentera l'ensemble du processus ci-dessus et chaque fonction en détail : pool de threads python (implémentation)
Connexe recommandations :
Implémentation du pool de threads python threadpool
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!