Невозможно решить ошибку TypeError: неупорядоченные типы: time.struct_time ()> float () - PullRequest
0 голосов
/ 23 июня 2019

Я хочу, чтобы функция запускалась в определенную дату и время. Я использую scheduler.enterabs (). Это дает мне следующую ошибку:

START: 1561263892.1316419
Traceback (most recent call last):
  File "timer.py", line 78, in <module>
    scheduler.run()
  File "/usr/lib/python3.5/sched.py", line 137, in run
    if time > now:
TypeError: unorderable types: time.struct_time() > float()
import sched,time
scheduler = sched.scheduler(time.time, time.sleep)
def print_event():
    print('inside print_event')
    print ('EVENT:', time.time())

print ('START:', time.time())
scheduler.enterabs(time.strptime("2019-06-23 09:55:00", "%Y-%m-%d %I:%M:%S"),1,print_event)

scheduler.run()

Я хочу запустить print_event () в определенную дату и время. Пожалуйста, помогите мне решить эту проблему. Заранее спасибо:)

Ответы [ 2 ]

0 голосов
/ 23 июня 2019

Значение timefunc, присвоенное sched.scheduler, равно time.time, которое работает с простыми числами с плавающей точкой только как время.

Это означает, что время, указанное для scheduler.enterabs, также должно быть числом с плавающей точкой.strptime вместо этого возвращает struct_time кортеж.

Решение: используйте time.mktime для преобразования кортежа во время с плавающей запятой.

0 голосов
/ 23 июня 2019

For, scheduler.enterabs(time, priority, action, argument=(), kwargs={})

Аргумент time должен иметь числовой тип, совместимый с возвращаемым значением функции timefunc, передаваемой конструктору.

Итак, возвращаемое значение time.strptime - это struct_time, возвращаемое gmtime () или localtime (), которое несопоставимо со значением с плавающей запятой, возвращаемым time.time.

Проверьте этот ответ для лучшего объяснения:

Что делаетЧто означает ошибка неупорядоченного типа в Python?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...