python 每个线程池为20 当线程池满了创建一个新的线程池 任务为动态加入
时间: 2023-11-22 13:49:31 浏览: 56
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 executor:
tasks = [executor.submit(task, i) for i in range(1, 30)]
for future in as_completed(tasks):
result = future.result()
print(f"任务 {result} 完成")
# 当线程池满了,创建一个新的线程池并动态加入任务
new_tasks = [executor.submit(task, i + 20) for i in range(30, 50)]
for future in as_completed(new_tasks):
result = future.result()
print(f"任务 {result} 完成")
if __name__ == "__main__":
main()
```
在这个示例中,我们首先创建了一个最大工作线程数为20的线程池。然后,我们将1到29的任务提交给线程池。当线程池满了时,我们创建了一个新的线程池并将21到49的任务动态加入。
阅读全文