Подскажите с unixtime

Мне нужно чтобы код продолжил свою работу в определенное время по unixtime. Я пробовал Переводить время в unixtime в цикле while True, но он постоянно перескакивает нужное время.

while True:
    millisecond = datetime.datetime.now()
    t=time.mktime(millisecond.timetuple())*1000
    #print(t)
    if t=='1652032326000':
      print(yeeee)

if t=='1652032326000': вот здесь перепрыгивает время


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

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

Можно использовать time.time(), но главное просто вместо == поставить >=.

import time

need_time = 1652032686 # на 1000 не надо умножать

while 1:
    if time.time() >= need_time:
        do_something()
→ Ссылка
Автор решения: askh

Вероятно самый простой вариант — это определить, какой длины должна быть пауза и приостановить выполнение скрипта при помощи функции time.sleep. Как-нибудь так (предполагается, что вы захотите продолжить выполнение скрипта 1 января 2023 года, в 0 часов 0 минут по Москве):

import time
time_to_continue = 1672520400
current_time = time.time()
if current_time < time_to_continue:
    time.sleep(time_to_continue - current_time)

Если исходная задача состоит в том, чтобы приостановить выполнение скрипта на определённое количество секунд, тогда вообще просто time.sleep(sleep_time_sec).

А ждать наступления нужного времени, проверяя текущее время в цикле (если у вас сделано так), это не лучшая идея, потому что тогда процессор нагружается ненужной работой.

→ Ссылка
Автор решения: Сергей

Исправил ваш код. См.комментарий ниже.

while True:
    millisecond = datetime.datetime.now()
    t=time.mktime(millisecond.timetuple())*1000
    #print(t)
    # Исправлена ошибка - обе части сравнения приведены к целому
    # И равенство заменено, чтобы не "проскочить" время 
    if int (t) >= 1652032326000:
      print(yeeee)
→ Ссылка