python - While 循环使用 concurrent.futures ProcessPoolExecutor
问题描述
对于一个项目,我需要使用 Python 完成许多任务。我想使用多个进程并让程序运行(非常)长时间。因此,我想对模块 concurrent.futures 使用 while 循环。
我猜这不是一个好主意,但现在我只是使用一个内部数字很大的 for 循环,这也不是那么好。
也许我需要创造一个未来,每次结束?我不知道如何处理
我的代码非常简化的版本如下所示:
from concurrent.futures import ProcessPoolExecutor, as_completed
def task(n):
print(f'Task {n} started...')
time.sleep(10) # Reaally long task
print(f'Task {n} ended.')
return n
numbers = range(0, 10)
with ProcessPoolExecutor(max_workers=2) as executor:
futures = [executor.submit(task, number) for number in numbers]
for future in as_completed(futures):
print(f'future job n°{future.result()} ended')
欢迎任何帮助:) 谢谢!
编辑:我最终做了什么
from concurrent.futures import ProcessPoolExecutor, as_completed
import time
def task(n):
# print(f'Task {n} started...')
time.sleep(1) # Reaally long task
# print(f'Task {n} ended.')
return n
number = 12
step_size = 3
while True:
numbers = range(number, number + step_size)
with ProcessPoolExecutor(max_workers=2) as executor:
futures = [executor.submit(task, number) for number in numbers]
for future in as_completed(futures):
print(f'future job n°{future.result()} ended')
number += step_size
解决方案
推荐阅读
- python - 需要帮助跨列应用函数以创建新列
- actions-on-google - 模拟器响应“语音无法识别”
- python - pytest.raises 失败:没有使用 try/except 引发
- google-cloud-platform - 在 Google Cloud AI Notebook 中使用 Bokeh Server
- vba - VBA用中间的今天日期替换文件夹中的所有文件
- css - 并非我在 div 中的所有 html 元素都被截断
- javascript - Lambda 策略权限:如何从 AWS 控制台为 lambda 函数设置函数策略?
- kubernetes - 在 GKE 中使用 Ingress 为 sftp 服务器公开 UDP 和 TCP 端口
- javascript - 从 Oracle Apex 中的 AJAX 流程中获得多个答案
- flutter - 如何在 Flutter 中通过拖放将元素移动到父容器内的任何位置?