import concurrent.futures
import time
def process_one(i):
try:
print("dealing with {}".format(i))
time.sleep(50)
print("{} Done.".format(i))
except Exception as e:
print(e)
def process_many():
with concurrent.futures.ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor:
executor.map(process_one,
range(100),
timeout=3)
if __name__ == '__main__':
MAX_WORKERS = 10
try:
process_many()
except Exception as e:
print(e)
В документах говорится:
Возвращенный итератор вызывает
concurrent.futures.TimeoutError
, если вызывается__next__()
и результат недоступен черезtimeout
секунд после исходного вызоваExecutor.map()
Но здесь скрипт не вызвал никаких исключений и продолжал ждать. Какие-либо предложения?
process_many
занимал ~ 3 секунды или меньше? - person arachnivore   schedule 25.07.2018