我想向一个服务器发出 1000 个请求。
我使用线程模块,但服务器阻止了我。
如何设置一次最多只能运行 10 个线程的线程(形成 1000 个线程的列表)?
使用线程池。在Doug Hellman的优秀线程文章中有一个线程池示例。
多处理模块提供了一个未记录的 ThreadPool 实现,该实现具有与其多处理池 API 相同的 API:
import multiprocessing.pool as mpool
def worker(url):
# process url
pool = mpool.ThreadPool(10)
for url in tasks:
pool.apply_async(target=worker, args=(url, ))
一种方法是使用线程池/工作线程模式。