ThreadPool
Last modified by John on 2021/11/29 15:04
Introduction
Provides an easy way to manage a pool of threads and submit and reap tasks run by those threads.
Examples
Generation of random numbers (known count):
import random
from threadpool import ThreadPool
tp = ThreadPool(5)
for i in range(100):
tp.add(i, random.random)
results = [tp.reap() for i in range(100)]
print("\n".join(map(str, results)))
from threadpool import ThreadPool
tp = ThreadPool(5)
for i in range(100):
tp.add(i, random.random)
results = [tp.reap() for i in range(100)]
print("\n".join(map(str, results)))
Notes:
- pool of 5 threads available to run tasks
- 100 tasks queued up
- all 100 tasks are expected and reaped
Generation of random numbers (unknown count):
import random
from threadpool import ThreadPool
tp = ThreadPool(5)
for i in range(100):
tp.add(i, random.random)
tp.drain()
results = []
while not tp.is_empty():
res = tp.reap()
results.append(res)
print("\n".join(map(str, results)))
from threadpool import ThreadPool
tp = ThreadPool(5)
for i in range(100):
tp.add(i, random.random)
tp.drain()
results = []
while not tp.is_empty():
res = tp.reap()
results.append(res)
print("\n".join(map(str, results)))
Notes:
- tp.drain() may interrupt the processing of tasks so that the number of completed tasks is not known
- tp.is_empty() checks for waiting, running, and done tasks