Python: задержка потока

#python

Вопрос:

Используя следующее, чтобы установить 30-секундный перерыв каждые 60 секунд, однако я не хочу, чтобы перерыв начинался сразу после первого запуска сценария. Как я могу добавить начальную задержку к первому перерыву?

 def Breaktime():
  threading.Timer(60, Breaktime).start()
  print("Breaking for 30 seconds")
  time.sleep(30)

Breaktime()
 

Комментарии:

1. Просто добавьте » time.sleep(30)’ перед вызовом функции.

2. Что вы подразумеваете под «30-секундным перерывом»? То, что у вас там есть, запускает новую нить и укладывает эту нить в сон, бесполезно. Это не повлияет на остальную часть вашей программы. Это то, что тебе было нужно? Если вы хотите, чтобы основной код приостановился, то вам нужно вставить sleep его в основной код.

Ответ №1:

Как насчет того, чтобы передать аргумент? Вот один из способов сделать это.

 def Breaktime(break_time=0):
  threading.Timer(60, Breaktime, kwargs={"break_time": 30}).start()
  print("Breaking for 30 seconds")
  time.sleep(break_time)

Breaktime()
 

Комментарии:

1. Остальная часть сценария продолжает выполняться, когда я это делаю, он печатает, что он ломается, но на самом деле не останавливается.