使用
with
语句等价于调用
executor.shutdown()
,
which is documented like this
:
shutdown(wait=True)
向执行者发出信号,表示在当前挂起的期货执行完毕时,它应该释放正在使用的任何资源。在关闭后调用executor.submit()和executor.map()将引发RuntimeError。
如果wait为true,则此方法将不会返回,直到所有挂起的期货执行完毕并且与执行者关联的资源被释放为止。
. 如果wait为false,则此方法将立即返回,并且在所有挂起的期货执行完毕后,将释放与执行者关联的资源。不管wait的值是多少,整个python程序都不会退出,直到所有待定的预购完成执行。
如果使用WITH语句,则可以避免显式调用此方法,因为WITH语句将关闭执行器(就像调用executor.shutdown()时wait设置为true一样等待)。
粗体部分解释了你所看到的行为;
submit()
呼叫确实立即返回,但
具有
语句将一直阻塞,直到所有提交的工作完成。要更改它,您不需要使用
具有
语句,而不是显式调用
shutdown(wait=False)
.