【发布时间】:2022-01-19 21:06:28
【问题描述】:
我正在尝试编写一个同时发送多个请求并返回第一个响应的函数。我目前正在使用concurrent.futures.ThreadPoolExecutor 对象。我知道在中间停止请求很复杂,所以我认为我可以将其他线程保留在后台并尽早返回一个值。但是,该函数似乎在返回之前等待其他线程完成。我怎样才能防止这种情况?我的代码如下所示:
def req(urls):
with concurrent.futures.ThreadPoolExecutor() as executor:
futures = []
for url in urls:
futures.append(executor.submit(get_request, url))
for future in concurrent.futures.as_completed(futures):
if future.result():
return future.result() # Other threads should stop now
return False # No valid response was sent
【问题讨论】:
标签: python multithreading concurrent.futures