In diesem Artikel wird hauptsächlich die Verwendung des Python-Thread-Pools Threadpool im Detail vorgestellt, der einen gewissen Referenzwert hat.
Ich arbeite derzeit an einem Videogeräteverwaltungsprojekt, einschließlich Geräten (Kamera). , DVR, NVR usw.), einschließlich Vervollständigung der Geräteinformationen, Push des Gerätestatus, Push der Geräte-Stream-Adresse usw. Wenn eine große Anzahl von Geräten gleichzeitig importiert wird und ein einzelner Thread zur Geräteerkennung verwendet wird, ist dies fällig Aufgrund der großen Anzahl von Geräten führt dies zu einer großen Verzögerung. Erwägen Sie daher Multithreading, um dieses Problem zu lösen.
Sie können den Thread-Pool mit der Python-Sprache selbst implementieren oder das Thread-Pool-Paket eines Drittanbieters verwenden. In diesem Thema werden hauptsächlich die Verwendung von Threadpool und seine spezifische Implementierung vorgestellt.
1. Installation
Installation verwenden:
pip installthreadpool
2 , verwenden Sie
(1) Threadpool-Modul einführen
(2) Thread-Funktion definieren
(3) Thread-Pool erstellen threadpool.ThreadPool()
(4) Thread-Pool erstellen Das ist erforderlich. Die zu verarbeitende Aufgabe ist threadpool.makeRequests()
(5) Legen Sie die mehreren erstellten Aufgaben in den Thread-Pool threadpool.putRequest
(6) Warten Sie, bis alle Aufgaben verarbeitet sind 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()
Das Obige ist ein spezifischer Thread-Pool-Nutzungsprozess
Die spezifische Definition von Threadpool lautet wie folgt:
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
Im nächsten Abschnitt werden der oben genannte gesamte Prozess und jede Funktion im Detail vorgestellt: Python-Thread-Pool Threadpool (Implementierung)
Verwandte Empfehlungen:
Implementierung des Python-Thread-Pools Threadpool
Das obige ist der detaillierte Inhalt vonArtikel zur Threadpool-Nutzung des Python-Thread-Pools. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!