Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Python Создать исполняемый exe https://www.cyberforum.ru/ python/ thread1646198.html
В общем, потребовалось скомпилировать скрипт Python: import os, time, re def Plus(): start = time.time() file_rez = open('dataREZ.txt', 'w') list_files = os.listdir('.') ...
Python Исправить ошибки в коде лотереи
ВОТ КОД #Спортлото import random winning_nums = random.sample(range(1,36),6) counter = 1 print ("Добро пожаловать в наш сервис") print
Как получить HTML код страницы после запроса? Python
def get_html(url): response = urllib.request.urlopen(url) return response.read() Создаю первую программу для парсинга, использую такой код(см. выше) и html код в браузере не совпадает с...
Python Как декомпилировать рус-файл подскажите чем декомпилировать рус файл в читабельный ру? для 2 и 3 питона т.к не знаю на чем точно написано было Добавлено через 9 минут fileview pro говорит что скорее всего написано на 2.7... https://www.cyberforum.ru/ python/ thread1646034.html
Python Редактор кода консольный https://www.cyberforum.ru/ python/ thread1645715.html
Добрый день Киборги:) На сайте используем систему wordpress и нужно всегда под нового клиента делать ЛК. Но менеджеры не всегда могут правильно вставить в код инфу... Появилась идея сделать...
Сверить номера телефонов в разных форматах Python
Здравствуйте, помогите решить задачу (Питон 3.3): Телефонные номера в адресной книге мобильного телефона имеют один из следующих форматов: +7<код><номер> 8<код><номер> <номер>
Python Скрипт сравнения текста и его замены
Сам я, увы программировать не умею, долго искал в интернете нечто подобное, но увы, ничего не нашел, поэтому прошу вас, добрых форумчан помочь мне с этим 10-минутным (для вас) делом. И так, мы...
Python Ubuntu для Python Где можно подробно прочитать, как все настроить? В Ubuntu 15 стоит пайтон 3.Х, для Flask'а лучше 2.7 поставить? Потихоньку слезаю с Win7 и очень сильно туплю в консоли... Пробую с этого хабра... https://www.cyberforum.ru/ python/ thread1645208.html
Python Преобразовать from с меньшими затратами времени https://www.cyberforum.ru/ python/ thread1644645.html
Необходимо преобразовать с минимальными затратами времени выражения типа: from urllib.request import urlopen from urllib.parse import quote_plus В вид типа: from urllib/request import urlopen...
Python Различия между версиями в python изучаю питон, хочу решить легенькую задачку по спискам, найти сумму элементов нечетных(четных) чисел в списке. знаю , как ответ будет во второй версии пайтона, а как в третьей не знаю. подскажите... https://www.cyberforum.ru/ python/ thread1644559.html
2723 / 2326 / 620
Регистрация: 19.03.2012
Сообщений: 8,832
25.01.2016, 16:52 0

Настроить декоратор на работу по дефолту (timeout=0)

25.01.2016, 16:52. Показов 1134. Ответов 3
Метки (Все метки)

Лучший ответ Сообщение было отмечено mmm_corp как решение

Решение

Решение для linux
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import time
import signal
import functools
 
 
class ExceededError(Exception):
    pass
 
 
def timeout(seconds=10):
    def decorator(func):
        def _handle_timeout(signum, frame):
            raise ExceededError('Превышено время ожидания')
 
        @functools.wraps(func)
        def wrapper(*args, **kwargs):
            signal.signal(signal.SIGALRM, _handle_timeout)
            signal.alarm(seconds)
            try:
                result = func(*args, **kwargs)
            finally:
                signal.alarm(0)
            return result
 
        if seconds == 0:
            return func
        else:
            return wrapper
 
    return decorator
 
 
@timeout(seconds=0)
def long_running_function():
    print('start')
    time.sleep(10)
    print('end')
 
try:
    long_running_function()
except ExceededError as error:
    print(error)
 
print('Продолжаем работу')
Кросс платформенное решение
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import time
import functools
import threading
 
 
class ExceededError(Exception):
    pass
 
 
def timeout(seconds):
    def decorator(func):
 
        def run_with_timeout(*args, **kwargs):
            def target():
                """
                Обертка для выполнения функции в отдельном потоке
                """
                try:
                    result.extend((func(*args, **kwargs), 'ok'))
                except Exception as error:
                    result.extend((error, 'error'))
 
            result = []
            worker = threading.Thread(target=target)
            worker.daemon = True
            try:
                worker.start()
                worker.join(seconds)
            except Exception as error:
                print('Error starting thread')
                raise error
 
            # Проверяем результат выполнения целевой функции
            if not result:
                message = (
                    'Функция "{}" выполнялась дольше,'.format(func.__name__) +
                    ' чем было разрешено "{}" сек.'.format(seconds)
                )
                raise ExceededError(message)
            else:
                if result[1] == 'error':
                    raise result[0]
 
        @functools.wraps(func)
        def wrapper(*args, **kwargs):
            if seconds == 0:
                return func(*args, **kwargs)
            else:
                run_with_timeout(*args, **kwargs)
 
        return wrapper
 
    return decorator
 
 
@timeout(0)
def long_running_function():
    print('start')
    time.sleep(5)
    print('end')
    return [0.1]
 
 
print(long_running_function())


Вернуться к обсуждению:
Настроить декоратор на работу по дефолту (timeout=0)
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.01.2016, 16:52
Готовые ответы и решения:

Настроить phpstorm на работу с БД
может тема не там, если что перенесите. не могу настроить phpstorm на работу с удаленным сервером ...

Как настроить работу с COM
Подскажите, как сделать, чтобы можно было получить ссылку (GetObject) на класс в моём приложении. ...

Как настроить работу button
Как сделать, чтобы при нажатии на кнопку , происходила такая операция. Брались значения из TextBox...

Помогите настроить работу формы
Добрый день! Требуется помощь при работе со списками в форме. У меня есть простая форма,...

3
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.