Для преобразования объекта datetime в строку с временем и миллисекундами в Python, можно использовать метод strftime():
  from datetime import datetime
  now = datetime.now()
  time_with_ms = now.strftime("%H:%M:%S.%f")
  print(time_with_ms)
  В этом примере, %H - часы (24-часовой формат), %M - минуты, %S - секунды, а %f - микросекунды.  Так как нужны миллисекунды, можно отрезать последние 3 цифры строки.
  from datetime import datetime
  now = datetime.now()
  time_with_ms = now.strftime("%H:%M:%S.%f")
  time_with_ms = time_with_ms[:-3]
  print(time_with_ms)
  Для преобразования объекта datetime в строку с временем и миллисекундами в Python можно использовать метод strftime().  Этот метод принимает строку форматирования в качестве аргумента, которая определяет, как будет выглядеть результирующая строка.
Вот пример кода, демонстрирующий, как это сделать:
import datetime
now = datetime.datetime.now()
# Форматируем время с миллисекундами
time_with_milliseconds = now.strftime("%H:%M:%S.%f")
print(time_with_milliseconds)
Разберем строку форматирования "%H:%M:%S.%f":
%H: Час (24-часовой формат)%M: Минуты%S: Секунды%f: Микросекунды (доли секунды).  В Python strftime() отображает микросекунды, а не миллисекунды, поэтому отображается 6 цифр.Если необходимо получить только миллисекунды, можно либо отрезать последние три символа от микросекундной части, либо разделить микросекунды на 1000:
import datetime
now = datetime.datetime.now()
# Способ 1: Обрезание строки
time_with_microseconds = now.strftime("%H:%M:%S.%f")
time_with_milliseconds = time_with_microseconds[:-3] #обрезаем последние 3 символа (микросекунды)
print(time_with_milliseconds)
# Способ 2: Арифметическое преобразование (если нужно число)
microseconds = now.microsecond
milliseconds = microseconds // 1000 # делим на 1000 чтобы получить миллисекунды
time_string = now.strftime("%H:%M:%S.") + str(milliseconds).zfill(3) # Дополняем нулями до 3 знаков
print(time_string)
       Важно!  Метод zfill(3) используется для добавления ведущих нулей к числу миллисекунд, чтобы оно всегда имело 3 цифры (например, "005", "050", "500").  Это гарантирует, что строка времени всегда будет иметь одинаковый формат.
    
Второй способ, когда микросекунды делятся на 1000, дает нам число миллисекунд, а не строку. Это полезно, если вам необходимо выполнять какие-либо математические операции с миллисекундами. Затем, результат преобразуется в строку и конкатенируется с остальной частью строки времени.