본문 바로가기
Python/0x18-thread

[python] thread pool

by SpeeDr00t 2023. 2. 7.
반응형
import time
import threading
import queue
def worker_thread(thread_id, job_queue, result_queue):
while not job_queue.empty():
job = job_queue.get()
if job is None:
break
result = job()
result_queue.put((thread_id, result))
class ThreadPool:
def __init__(self, max_threads):
self.max_threads = max_threads
self.job_queue = queue.Queue()
self.result_queue = queue.Queue()
def add_job(self, job):
self.job_queue.put(job)
def start(self):
threads = []
for i in range(self.max_threads):
t = threading.Thread(target=worker_thread, args=(i, self.job_queue, self.result_queue))
t.start()
threads.append(t)
for t in threads:
t.join()
def hang():
#time.sleep(61)
print('test')
if __name__ == "__main__":
pool = ThreadPool(8)
for i in range(100):
pool.add_job(hang)
pool.start()
view raw thread.py hosted with ❤ by GitHub
반응형

'Python > 0x18-thread' 카테고리의 다른 글

timer ][ 5초 동안 입력 없으면 종료하기  (0) 2020.01.20