При использовании concurrent.futures.ThreadPoolExecutor
я получаю тихую ошибку, когда существующий пул потоков не перезапускается (Python 3.6.5, macOS 10.15.4). Пример, похожий на мой вариант использования:
from concurrent.futures import ThreadPoolExecutor
import requests
import time
def child_process(url):
response = requests.get(url)
time.sleep(2)
return response.text
def main():
counter = 0
with ThreadPoolExecutor(10) as pool:
while True:
args = ['https://www.google.com' for _ in range(10)]
results = pool.map(child_process, args)
[i for i in results]
counter += 1
print(f'{counter}')
if __name__ == '__main__':
main()
производит:
1
2
3
4
5
6
7
8
9
10
11
12
, где программа теперь зависает на 12 после закрытия крышки моего MacBook (при условии, что он находится в спящем или состояние энергосбережения) и повторное открытие.
Кто-нибудь еще сталкивался с этой проблемой? Есть ли способ обеспечить безопасный перезапуск программы?