#python #concurrent.futures
Вопрос:
Мне любопытно узнать об исполнителе.метод выключения, и я пытался найти некоторую информацию об этом…
согласно документам python,
**завершение работы(ожидание=True, *, cancel_futures=False)
Если значение wait равно True, то этот метод не вернется до тех пор, пока не будут выполнены все отложенные фьючерсы и не будут освобождены ресурсы, связанные с исполнителем. Если значение wait равно False, то этот метод немедленно вернется, и ресурсы, связанные с исполнителем, будут освобождены, когда все ожидающие исполнения фьючерсы будут выполнены. Независимо от значения ожидания, вся программа Python не завершится до тех пор, пока не будут выполнены все отложенные фьючерсы.**
но я не мог понять, что означает «этот метод вернется» в этом абзаце…
делает исполнитель.метод завершения работы возвращает какое-либо значение??
например, в этом коде
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')
возвращает ли метод завершения работы какое-либо значение??
Комментарии:
1. Это означает то, что
return
всегда означает, выйти из функции и вернуть управление вызывающему абоненту
Ответ №1:
shutdown()
явно не возвращает значение (это означает, что если бы вы захватили возвращаемое значение, оно было бы None
, как и любая другая функция или метод, который не возвращает значение).
Вся документация , на которую ссылается wait
аргумент, заключается в том , что if wait=False
shutdown()
немедленно вернется к вызывающему абоненту, и if wait=True
shutdown()
будет ждать возвращения до тех пор, пока фьючерсы не завершатся.
Соответствующая часть кода в shutdown()
буквально такова:
if wait: for t in self._threads: t.join()
Он объединяет все потоки и возвращается после их выхода.