Use thread pooling when you have a lot of small tasks to be performed but want to limit the number of threads used. The concurrent.futures.ThreadPoolExecutor is often used for this.