Python. Как завершить выполнение exec() через заданное время?

Здрасте! Хочу сделать на питоне код для автопроверки работы программы. Допустим у меня есть код, который я запускаю через exec(). Как я могу сделать, чтобы по прошествии 1 секунды программа закачивала его выполнение и выводила Time limit exceeded?


Ответы (1 шт):

Автор решения: CrazyElf

Примерно так можно сделать:

  • создать отдельный процесс, который будет выполнять exec
  • подождать секунду и, если процесс с exec ещё не завершился, прекратить его
from multiprocessing import Process
from time import sleep

def run_exec():
    print('запуск процесса')
    exec('sleep(3)')
    print('процесс завершен')

if __name__ == '__main__':
    t = Process(target=run_exec)
    t.start()
    sleep(2)
    if t.is_alive():
        t.terminate()
        print('процесс прерван')

Можете поиграться со значениями sleep в основном коде и в процессе, чтобы убедиться, что всё работает - либо процесс успевает отработать за определённое время, либо он принудительно прекращается.

→ Ссылка