Как использовать concurrent.futures с таймаутами?

Я пытаюсь получить тайм-ауты для работы в python3.2, используя модуль concurrent.futures. Однако, когда он истекает по таймауту, на самом деле это не останавливает выполнение. Я пробовал использовать как потоки, так и исполнители пула процессов, ни один из них не остановил задачу, и только до ее завершения тайм-аут увеличился. Кто-нибудь знает, можно ли заставить это работать?

import concurrent.futures
import time
import datetime

max_numbers = [10000000, 10000000, 10000000, 10000000, 10000000]

def run_loop(max_number):
    print("Started:", datetime.datetime.now(), max_number)
    last_number = 0;
    for i in range(1, max_number + 1):
        last_number = i * i
    return last_number

def main():
    with concurrent.futures.ProcessPoolExecutor(max_workers=len(max_numbers)) as executor:
        try:
            for future in concurrent.futures.as_completed(executor.map(run_loop, max_numbers, timeout=1), timeout=1):
                print(future.result(timeout=1))
        except concurrent.futures._base.TimeoutError:
            print("This took to long...")

if __name__ == '__main__':
    main()
15
задан agf 29 September 2011 в 16:20
поделиться