이 글은 주로 python 스레드 풀의 사용법을 자세하게 소개하고 있습니다. 관심 있는 친구들은 참고하시면 됩니다.
현재 장비에는 카메라, DVR, NVR 등이 포함됩니다. 등), 장치 정보 완성, 장치 상태 푸시, 장치 스트림 주소 푸시 등을 포함합니다. 동시에 가져오는 장치가 많고 단일 스레드를 장치 감지에 사용하는 경우 장치 수가 많을수록 더 많은 지연이 발생하므로 이 문제를 해결하려면 멀티스레딩을 고려하십시오.
스레드 풀을 직접 구현하려면 Python 언어를 사용하거나 타사 패키지인 threadpool 스레드 풀 패키지를 사용할 수 있습니다. 이 항목에서는 주로 스레드 풀의 사용과 구체적인 구현을 소개합니다.
1. 설치를 사용하여
을 설치합니다.
pip installthreadpool
2.
을 사용합니다. (1) 스레드 풀 모듈 소개
(2) 스레드 풀 스레드 풀 생성. ThreadPool ()
(4) 스레드 풀 처리가 필요한 작업, 즉 threadpool.makeRequests()
를 생성합니다. (5) 생성된 여러 작업을 스레드 풀 threadpool.putRequest
에 넣습니다. (6) 모든 작업이 adpool에서 처리될 때까지 기다립니다. 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()
threadpool은 구체적으로 다음과 같이 정의됩니다.
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
위 내용은 Python 스레드 풀 스레드 풀 사용법 문서의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!