Как можно установить ограничение на время выполнения функции в Python на операционной системе Windows?

Как мне ограничить время выполнения eval() на пять секунд, если использование модуля signal на Windows не работает и реализация с использованием multiprocessing, threading, asyncio также не удалась?
  • 18 ноября 2023 г. 12:08
Ответы на вопрос 3
Ограничение времени выполнения функции в Python на операционной системе Windows можно реализовать с помощью модуля `threading.Timer`. Вот простой пример:

```python
import threading

def func():
    # Ваш код, который нужно выполнить

t = threading.Timer(5.0, func)
t.start()
t.join()
```

В этом примере `func()` будет выполнена через 5 секунд. Если функция `func()` выполнится раньше, чем через 5 секунд, она будет завершена нормально. Если она не завершится в течение 5 секунд, она будет прервана.

Отметим также, что использование `eval()` с ограничением времени выполнения может быть опасным, так как `eval()` может выполнять произвольный код, что может привести к небезопасным или нежелательным действиям.
надо использовать модуль subprocess вместо multiprocessing, посмотрите описание функции popen и параметр timeout в документации на сайте гугл 
 также вы можете использовать классику - команды kill/pskill и тому подобное для прекращения процессов через операционную систему
Похожие вопросы