@Enot_Star

Как задать ограничение на время выполнения куска кода?

В моем коде может случится такое, что строчка будет выполняться непростительно долго.
Нужно организовать принцип, по которому в случае, если она будет обрабатываться дольше, например 1 секунды, то ее выполнение будет прекращено.

Хотел решить с помощью многопоточности, но так как я не шарю у меня не получилось.
После использовал фишки Unix систем, а именно signal, но во-1 ошибка возникает в другом месте, а во-2 это решение не может использоваться на винде.

Покажите пожалуйста пример кода в котором описан изложенный выше принцип с использованием потоков по средствам multiprocessing или threading, буду очень благодарен
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
@RivalCode
Нужно обязательно установить у потока daemon=True, иначе программа будет дожидаться его завершения
import time
import threading
import random

def longworker():
    t = random.randint(10,20)
    time.sleep(t)
    print('воркер работал {} секунд'.format(t))

w = threading.Thread(target=longworker, daemon=True)
w.start()

w.join(timeout=15)
if w.isAlive():
    print('Завершаем работу не дождавшись воркера')
    exit()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы