Datetime.now() в Windows, WSL и Linux?Python

Программы на Python
Ответить
Гость
 Datetime.now() в Windows, WSL и Linux?

Сообщение Гость »


Я вижу разницу в функции datetime.now() в Windows Python 3.11 по сравнению с WSL Python 3.10 и Linux Python 3.10. В Windows я получаю повторяющиеся записи. В WSL и Linux нет.

Я конвертирую тестовую систему с использования Python в WSL на использование Python в Windows, и столкнулся с какой-то странной проблемой. В одном месте предыдущий автор записывал datetime.now() в начале скрипта, а затем позже проверял его дельту, чтобы увидеть, осталась ли она прежней (я не уверен, почему, но это то, что происходило ). Это внезапно сломалось с Python в Windows. После некоторого копания кажется, что это происходит потому, что большую часть времени в двух вызовах datetime.now() буквально нет разницы. Я попробовал это с WSL, и это все равно сработало. Вот пример того, о чем я говорю в зародыше:

из даты и времени импортировать дату и время как dt для меня в диапазоне (0,10): print(f"дата и время: {dt.now()}") В Windows выводится вот что:

дата и время: 2024-02-26 17:09:39.393765 дата и время: 2024-02-26 17:09:39.393765 дата и время: 2024-02-26 17:09:39.408956. дата и время: 2024-02-26 17:09:39.408956. дата и время: 2024-02-26 17:09:39.408956. дата и время: 2024-02-26 17:09:39.409962. дата и время: 2024-02-26 17:09:39.409962. дата и время: 2024-02-26 17:09:39.409962. дата и время: 2024-02-26 17:09:39.409962. дата и время: 2024-02-26 17:09:39.410971. Как видите, несколько записей идентичны.

Та же система и код, что и у WSL:

дата и время: 2024-02-26 17:10:58.658753 дата и время: 2024-02-26 17:10:58.658802. дата и время: 2024-02-26 17:10:58.658828. дата и время: 2024-02-26 17:10:58.658837. дата и время: 2024-02-26 17:10:58.658857. дата и время: 2024-02-26 17:10:58.658880 дата и время: 2024-02-26 17:10:58.658888. дата и время: 2024-02-26 17:10:58.658892. дата и время: 2024-02-26 17:10:58.658911 дата и время: 2024-02-26 17:10:58.658935 Нет дубликатов.

Изначально я предполагал, что это связано с накладными расходами, связанными с тем, что WSL является виртуальной машиной, но я не совсем уверен. Я просто нашел это странным и не смог найти никакой помощи в Интернете, так как обычно причина, по которой люди сталкиваются с datetime.now() «не обновлением», заключается в том, что они присваивают вывод переменной и не перезапускают его. , но каждый раз запускаю его заново.

Мне было любопытно, поэтому я просто запустил его еще раз на установленном мной компьютере Linux (Ubuntu 22.04), и он также не обнаружил никаких дубликатов.

дата и время: 2024-02-27 09:38:16.767813 дата и время: 2024-02-27 09:38:16.767853 дата и время: 2024-02-27 09:38:16.767860 дата и время: 2024-02-27 09:38:16.767864 дата и время: 2024-02-27 09:38:16.767869 дата и время: 2024-02-27 09:38:16.767873 дата и время: 2024-02-27 09:38:16.767878. дата и время: 2024-02-27 09:38:16.767882. дата и время: 2024-02-27 09:38:16.767889. дата и время: 2024-02-27 09:38:16.767894 Я проверил версии Python в каждой и увидел разницу: Windows: Питон 3.11.8. WSL: Python 3.10.12 Ubuntu: Python 3.10.12

ЦП тоже разные, если это имеет значение в данном случае:

Окна: Процессор i7-8700 @ 3,20 ГГц, 3192 МГц, 6 ядер, 12 логических процессоров

Линукс: ЛСКПУ Архитектура: x86_64 Режим(ы) работы ЦП: 32-битный, 64-битный Размеры адреса: 39 бит физического, 48 бит виртуального. Порядок байтов: Little Endian Процессор(ы): 8 Онлайн-список процессоров: 0–7 Идентификатор поставщика: GenuineIntel Название модели: Процессор Intel(R) Core(TM) i7-6700 @ 3,40 ГГц Семейство процессоров: 6 Модель: 94 Потоков на ядро: 2 Ядер(ов) на сокет: 4 Розетка(и): 1 Шаг: 3 Макс. частота процессора, МГц: 3400,0000 Минимальная частота ЦП: 800,0000

Код, с которым я работал, легко заставить работать с Windows Python, добавив time.sleep(0.000001), и я не уверен, нужен ли вообще код, нарушающий правила, но мне просто любопытно, почему это происходит, и мне интересно, может ли кто-нибудь пролить на это свет.

Спасибо!
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»