首页 > 解决方案 > executor.shutdown 中的“方法返回”是什么意思?

问题描述

我对 executor.shutdown 方法很好奇,我试图找到一些关于它的信息......

根据python文档,

**关机(等待=真,*,cancel_futures=假)

如果 wait 为 True,则此方法将不会返回,直到所有未决的期货都执行完毕并且与执行程序关联的资源已被释放。如果 wait 为 False,则此方法将立即返回,并且当所有挂起的期货执行完毕后,与执行程序关联的资源将被释放。无论等待的值如何,整个 Python 程序都不会退出,直到所有未决的期货都执行完毕。**

但我无法理解段落中“此方法将返回”的含义......

executor.shutdown 方法是否返回任何值?

例如,在这段代码中

import concurrent.futures
import time

def pafter(t):
    time.sleep(t)
    print('Hi)

with concurrent.futures.ThreadPoolExecutor(5) as e:
    e.submit(pafter, 2)

print('With returned')

关闭方法是否返回任何值?

标签: pythonconcurrent.futures

解决方案


shutdown()没有显式返回值(意思是,如果您捕获了返回值,它将是None,就像任何其他不返回值的函数或方法一样)。

wait所有有关该参数的文档都指的是 if wait=False,shutdown()将立即返回给调用者,并且 if wait=True,shutdown()将等到期货完成后才返回。

代码的相关部分shutdown()实际上就是这样:

if wait:
    for t in self._threads:
        t.join()

它加入所有线程并在它们退出后返回。


推荐阅读