>  기사  >  백엔드 개발  >  Python 스레드 풀 스레드 풀 사용법 문서

Python 스레드 풀 스레드 풀 사용법 문서

不言
不言원래의
2018-05-02 14:29:342794검색

이 글은 주로 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 스레드 풀 threadpool(구현)

관련 권장 사항:


Python 스레드 풀 threadpool 구현

위 내용은 Python 스레드 풀 스레드 풀 사용법 문서의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.