Есть скрипт, который должен остановиться через 1мин
Я новичок, в инете не нашел нужной мне информации
Я новичок, в инете не нашел нужной мне информации
спасибо, выручилНа Линуксах можно использовать timeout, типа "timeout 30s python myscript.py" или что-то такое. Или тебе в самом скрипте нужно сделать? В таком случае нужно в сигналах искать скорее всего, тк потоки в питоне штатным образом не остановишь. Если можно просто рухнуть после этого времени, то создаешь поток, делаешь join с указанием времени. По выходу из join проверяешь вышел ли поток или нет, если нет, то выбрасываешь исключение и скрипт остановится. Можно еще мультипроцессингом обойтись, но тогда скрипт будет форкать новый процесс.
На Линуксах можно использовать timeout, типа "timeout 30s python myscript.py" или что-то такое. Или тебе в самом скрипте нужно сделать? В таком случае нужно в сигналах искать скорее всего, тк потоки в питоне штатным образом не остановишь. Если можно просто рухнуть после этого времени, то создаешь поток, делаешь join с указанием времени. По выходу из join проверяешь вышел ли поток или нет, если нет, то выбрасываешь исключение и скрипт остановится. Можно еще мультипроцессингом обойтись, но тогда скрипт будет форкать новый процесс.
#!/bin/bash
until python test.py
do
echo "Restarting"
sleep 1
done
Вставлю свои 5 копеек, если я не ошибаюсь то при распараллеливании огромное значение также имеет что именно за 'код' будет работать в каждом треде(звучит наверное немного странно), так как например при попытке использовать 'dlib' в каждом отдельном потоке у меня всегда все вылетало наглухо, с какими только опциями я его не пробовал собирать, как только я не пробовал стартовать потоки итд(убил кучу времени).На Линуксах можно использовать timeout, типа "timeout 30s python myscript.py" или что-то такое. Или тебе в самом скрипте нужно сделать? В таком случае нужно в сигналах искать скорее всего, тк потоки в питоне штатным образом не остановишь. Если можно просто рухнуть после этого времени, то создаешь поток, делаешь join с указанием времени. По выходу из join проверяешь вышел ли поток или нет, если нет, то выбрасываешь исключение и скрипт остановится. Можно еще мультипроцессингом обойтись, но тогда скрипт будет форкать новый процесс.
Sorry if I speak english but you can use the sleep function, you first have to import the "sleep module": 'from time import sleep'.There is a script that should stop after 1min
I'm new, I couldn't find the information I needed on the internet.
from time import sleep
print('I am going to wait 3 seconds')
sleep(3)
print('I printed this after 3 seconds!')
Time module is preinstalled.you first have to intall the 'time' library "using pip install time" in cmd
from threading import Timer
from _thread import interrupt_main as Stop
from time import sleep as Sleep
from sys import exit as Exit
def do_something():
for i in range(10): # 10 секунд для наглядности
Sleep(1)
print(i)
if __name__ == '__main__':
timer = Timer(5, Stop) # 5 замени на 60 (секунд)
timer.start()
try:
do_something()
except KeyboardInterrupt:
Exit()
my bad, but the code still worksTime module is preinstalled.
Yeah, your code works. It just does not do, what was asked - terminating execution of main function after exact period of time.my bad, but the code still works
signal.signal(signal.SIGALRM, handler)
signal.alarm(60)
есть библиотека schedule, https://tirinox.ru/schedule-cron-python/Есть скрипт, который должен остановиться через 1мин
Я новичок, в инете не нашел нужной мне информации
this script is better:Yeah, your code works. It just does not do, what was asked - terminating execution of main function after exact period of time.
from time import sleep
def loop():
print("Hello World!")
sleep(3)
return
#makes function say "Hello World!" and then stop after 3 seconds without stopping whole python code
Reread the Pernat1y's message, you don't understand what should be done in this topic, it has nothing to do with sleeping the thread, it is about breaking the thread's execution after a period of time.this script is better
Есть скрипт, который должен остановиться через 1мин
Я новичок, в инете не нашел нужной мне информации
from datetime import datetime, timedelta
from time import sleep
def loop():
end_time = datetime.now() + timedelta(seconds=3)
while datetime.now() < end_time:
#do something here
print('hello world')
sleep(0.3)
loop()
библиотека и одна строчка кода для новичка, мне кажется, будет оптимальным решением, нежели писать стену кода ради того, чтобы программа остановилась.Сейчас бы библиотеку для простой задачи.