python 每个线程池为20 当线程池满了创建一个新的线程池
时间: 2023-11-22 07:49:31 浏览: 186
在Python中,可以使用`concurrent.futures`库中的`ThreadPoolExecutor`类来创建一个线程池。当线程池满了时,可以创建一个新的线程池并将任务添加到新的线程池中。以下是一个示例:
```python
from concurrent.futures import ThreadPoolExecutor, as_completed
import time
def task(n):
time.sleep(n)
return n
def main():
with ThreadPoolExecutor(max_workers=20) as executor1:
tasks = [executor1.submit(task, i) for i in range(30)]
for future in as_completed(tasks):
print(future.result())
with ThreadPoolExecutor(max_workers=20) as executor2:
tasks = [executor2.submit(task, i + 30) for i in range(20)]
for future in as_completed(tasks):
print(future.result())
if __name__ == "__main__":
main()
```
在这个示例中,我们首先创建了一个最大工作线程数为20的线程池`executor1`,并向其提交了30个任务。当`executor1`的任务队列满时,我们创建了一个新的线程池`executor2`,并向其提交了剩余的20个任务。这样,当一个线程池满了时,我们可以创建一个新的线程池并将任务添加到新的线程池中。
阅读全文