Примеры работы strptime() в python

Сравните производительность блоков кода

Мы можем легко сравнить производительность нескольких блоков кода с помощью .

Мы будем использовать для этой цели таймер, используя .

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

import timeit

start_time = timeit.default_timer()
function_1()
time_1 = timeit.default_timer() - start_time

start_time = timeit.default_timer()
function_2()
time_2 = timeit.default_timer() - start_time

print('Function 1 took', time_1)
print('Function 2 took', time_2)

Давайте протестируем 2 функции в массиве numpy и и посмотрим, как они сравниваются.

import timeit
import numpy as np

def time_range(size):
    for i in range(size):
        pass

def time_arange(size):
    np.arange(size)

if __name__ == '__main__':
    # For smaller arrays
    print('Array size: 1000')

    start_time = timeit.default_timer();
    time_range(1000)
    range_time_1 = timeit.default_timer() - start_time

    start_time = timeit.default_timer();
    time_arange(1000)
    arange_time_1 = timeit.default_timer() - start_time

    # For large arrays
    print('Array size: 1000000')

    start_time = timeit.default_timer();
    time_range(1000000)
    range_time_2 = timeit.default_timer() - start_time

    start_time = timeit.default_timer();
    time_arange(1000000)
    arange_time_2 = timeit.default_timer() - start_time

    print(f'size 1000: range() took {range_time_1}')
    print(f'size 1000: arange() took {arange_time_1}')
    print(f'size 1000000: range() took {range_time_2}')
    print(f'size 1000000: arange() took {arange_time_2}')

Выход

Array size: 1000
Array size: 1000000
size 1000: range() took 2.2970001737121493e-05
size 1000: arange() took 8.393999451072887e-06
size 1000000: range() took 0.02567379199899733
size 1000000: arange() took 0.0031752489994687494

Таким образом, мы могли легко использовать для сравнения производительности различных функций.

Range

If you want to iterate over a period, you can use the method:

Note

Supported units for are: , , ,
, , and

You can pass an amount for the passed unit to control the length of the gap:

You can also directly iterate over the instance,
the unit will be in this case:

You can check if a instance is inside a period using the keyword:

Testing

The testing methods allow you to set a instance (real or mock) to be returned
when a «now» instance is created.
The provided instance will be returned specifically under the following conditions:

  • A call to the method, ex. .
  • When the string «now» is passed to the method, ex.

If you don’t want to manually clear the mock (or you are afraid of forgetting),
you can use the provided contextmanager.

Limitations

Even though the class is a subclass of ,
there are some rare cases where it can’t replace the native class directly.
Here is a list (non-exhaustive) of the reported cases with a possible solution, if any:

  • will use the the function to determine the type of the object by default. To work around it you can register a new adapter:

  • (former ) and will use the the function to determine the type of the object by default. To work around it you can register a new adapter:

  • will use the method to store datetimes in the database. However, since is always timezone aware, the offset information will always be returned by raising an error, at least for MySQL databases. To work around it, you can either create your own or use the previous workaround for :

Работа с unix timestamp/time на python

Совсем недавно, я начал свое изучение python. Мне потребовалось несколько дней для того чтобы начать писать на нем элементарные вещи. И мне бы хотелось сохранять полезную информацию в виде своих заметок и для питон.

Как преобразовать unix timestamp в datetime на Python?

Делается это очень просто:

#!/bin/env python3

import datetime
timestamp = 1339521878.04
value = datetime.datetime.fromtimestamp(timestamp)
print(value.strftime('%Y-%m-%d %H:%M:%S'))

Чтобы получить datetime времени (сейчас), можно выполнить:

#!/bin/env python3

import datetime,time
dt = datetime.datetime.now()
value = datetime.datetime.fromtimestamp(time.mktime(dt.timetuple()))
print(value.strftime('%Y-%m-%d %H:%M:%S'))

Вывод будет следующим:

2017-08-04 14:25:21

Как преобразовать datetime в timestamp на Python?

Делается это очень просто:

#!/bin/env python3

from datetime import datetime
import time

# time tuple in local time to timestamp
time_tuple = (2017, 11, 12, 13, 59, 27, 2, 317, 0)
timestamp = time.mktime(time_tuple)
print (repr(timestamp))

# time tuple in utc time to timestamp
time_tuple_utc = (2017, 11, 12, 13, 59, 27, 2, 317, 0)
timestamp_utc = calendar.timegm(time_tuple_utc)
print (repr(timestamp_utc))

Конвертация в строку:

#!/bin/env python3

from datetime import datetime
import time

# datetime object to string
dt_obj = datetime(2017, 11, 10, 17, 53, 59)
date_str = dt_obj.strftime("%Y-%m-%d %H:%M:%S")
print (date_str)

# time tuple to string
time_tuple = (2017, 11, 12, 13, 51, 18, 2, 317, 0)
date_str = time.strftime("%Y-%m-%d %H:%M:%S", time_tuple)
print (date_str)

Конвертация в datetime:

#!/bin/env python3
from datetime import datetime
import time

# time tuple to datetime object
time_tuple = (2017, 11, 12, 13, 51, 18, 2, 317, 0)
dt_obj = datetime(*time_tuple)
print (repr(dt_obj))

# date string to datetime object
date_str = "2017-11-10 17:53:59"
dt_obj = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
print (repr(dt_obj))

# timestamp to datetime object in local time
timestamp = 1226527167.595983
dt_obj = datetime.fromtimestamp(timestamp)
print (repr(dt_obj))

# timestamp to datetime object in UTC
timestamp = 1226527167.595983
dt_obj = datetime.utcfromtimestamp(timestamp)
print (repr(dt_obj))

Получаем вывод:

datetime.datetime(2017, 11, 12, 13, 51, 18)
datetime.datetime(2017, 11, 10, 17, 53, 59)
datetime.datetime(2008, 11, 12, 23, 59, 27, 595983)
datetime.datetime(2008, 11, 12, 21, 59, 27, 595983)

Конвертация time tuples:

#!/bin/env python3

from datetime import datetime
import time

# datetime object to time tuple
dt_obj = datetime(2017, 11, 10, 17, 53, 59)
time_tuple = dt_obj.timetuple()
print (repr(time_tuple))

# string to time tuple
date_str = "2017-11-10 17:53:59"
time_tuple = time.strptime(date_str, "%Y-%m-%d %H:%M:%S")
print (repr(time_tuple))

# timestamp to time tuple in UTC
timestamp = 1226527167.595983
time_tuple = time.gmtime(timestamp)
print (repr(time_tuple))

# timestamp to time tuple in local time
timestamp = 1226527167.595983
time_tuple = time.localtime(timestamp)
print (repr(time_tuple))

Получим вывод:

time.struct_time(tm_year=2017, tm_mon=11, tm_mday=10, tm_hour=17, tm_min=53, tm_sec=59, tm_wday=4, tm_yday=314, tm_isdst=-
1)
time.struct_time(tm_year=2017, tm_mon=11, tm_mday=10, tm_hour=17, tm_min=53, tm_sec=59, tm_wday=4, tm_yday=314, tm_isdst=-
1)
time.struct_time(tm_year=2008, tm_mon=11, tm_mday=12, tm_hour=21, tm_min=59, tm_sec=27, tm_wday=2, tm_yday=317, tm_isdst=0
)
time.struct_time(tm_year=2008, tm_mon=11, tm_mday=12, tm_hour=23, tm_min=59, tm_sec=27, tm_wday=2, tm_yday=317, tm_isdst=0
)

Вот и все.

Метод after() — Погружение в сон для Tkinter

tkinter является частью стандартной библиотеки Python. В случае, если вы используете заранее установленную версию Python на Linux или Mac, он может быть вам недоступен. При получении ошибки стоит самостоятельно добавить его в систему. В том случае, если вы ранее установили Python сами, должен быть доступен.

Начнем с разбора примера, где используется . Запустите следующий код и посмотрите, что произойдет при неправильном добавлении вызова в Python:

Python

import tkinter
import time

class MyApp:
def __init__(self, parent):
self.root = parent
self.root.geometry(«400×400″)
self.frame = tkinter.Frame(parent)
self.frame.pack()
b = tkinter.Button(text=»click me», command=self.delayed)
b.pack()

def delayed(self):
time.sleep(3)

if __name__ == «__main__»:
root = tkinter.Tk()
app = MyApp(root)
root.mainloop()

1
2
3
4
5
6
7
8
9
10
11
12
13

15
16
17
18
19

importtkinter

importtime

classMyApp

def__init__(self,parent)

self.root=parent

self.root.geometry(«400×400»)

self.frame=tkinter.Frame(parent)

self.frame.pack()

b=tkinter.Button(text=»click me»,command=self.delayed)

b.pack()

defdelayed(self)

if__name__==»__main__»

root=tkinter.Tk()

app=MyApp(root)

root.mainloop()

После запуска кода нажмите кнопку в GUI. Кнопка не будет реагировать три секунды, ожидая завершения . Если в приложении есть другие кнопки, на них тоже нельзя будет нажать. Закрыть приложение во время сна нельзя, так как оно не будет откликаться на событие закрытия.

Для должного погружения в сон потребуется использовать :

Python

import tkinter

class MyApp:
def __init__(self, parent):
self.root = parent
self.root.geometry(«400×400»)
self.frame = tkinter.Frame(parent)
self.frame.pack()
self.root.after(3000, self.delayed)

def delayed(self):
print(‘Я задержался’)

if __name__ == «__main__»:
root = tkinter.Tk()
app = MyApp(root)
root.mainloop()

1
2
3
4
5
6
7
8

10
11
12
13
14
15
16
17

importtkinter

classMyApp

def__init__(self,parent)

self.root=parent

self.root.geometry(«400×400»)

self.frame=tkinter.Frame(parent)

self.frame.pack()

defdelayed(self)

print(‘Я задержался’)

if__name__==»__main__»

root=tkinter.Tk()

app=MyApp(root)

root.mainloop()

Здесь создается приложение, высота которого 400 пикселей, и ширина также 400 пикселей. На нем нет виджетов. Оно только показывает фрейм. Затем вызывается , где является отсылкой к объекту . принимает два аргумента:

  1. Количество миллисекунд для сна;
  2. Метод который вызовется после завершения сна.

В данном случае приложение выведет строку в стандартный поток вывода (stdout) через 3 секунды. Можно рассматривать как Tkinter-версию того же , только он добавляет способность вызова функции после завершения сна.

Данную функциональность можно использовать для улучшения работы пользователя. Добавив в Python вызов , можно ускорить процесс загрузки приложения, после чего начать какой-то длительный процесс. В таком случае пользователю не придется ждать открытия приложения.

Как открыть HEIC

Работа с часовыми поясами

К сожалению у меня нет большого опыта работы с часовыми поясами и примеры ниже не стоит рассматривать как лучшие практики. 

Библиотека datetime не хранит часовые пояса, данные о переводах часов (летнее и зимнее время) и високосных секундах. К тому же, некоторые страны, могут изменить время опираясь на локальные ситуации. Эти ситуации опасны, когда идет запись в базу данных. Для вывода в GUI, можно использовать datetime.datetime.now() или высчитывать часовой пояс из базы.

Для записи в базу данных мы можем использовать время UTC и отдельно считать часовой пояс:

Следующий пример вычислит разницу времени между UTC и локальным. Насколько я знаю он может не сработать на версиях Python < 3.3:

Для вычисления других часовых поясов можно использовать стороннюю библиотеку pytz, которая их хранит:

 Вывести все часовые пояса мы можем так:

На примере ниже я перевожу локальное время в часовой пояс Киева:

Теги:

#python

#datetime

Связанные темы и праздники

Получение текущего объекта datetime

Теперь для большинства реальных программ можно использовать текущее время и сохранить его как объект datetime. Мы можем использовать функцию datetime.now() для отображения текущего времени как объекта datetime.

from datetime import datetime

Давайте теперь рассмотрим пример.

from datetime import datetime

current_datetime = datetime.now()
print(current_datetime)

Выход

datetime.datetime(2020, 6, 27, 22, 45, 54, 267673)

Выход совпадает. В нем указано, что текущее время — 27 июня 2020 года, 22:45:54 по моему местному часовому поясу (IST).

Теперь мы также можем использовать базовые операторы для получения прошлого или будущего времени.

from datetime import datetime, timedelta

current_datetime = datetime.now()

# future dates
one_year_future_date = current_datetime + timedelta(days=365)

print('Current Date:', current_datetime)
print('One year from now Date:', one_year_future_date)

# past dates
three_days_before_date = current_datetime - timedelta(days=3)
print('Three days before Date:', three_days_before_date)

Выход

Current Date: 2020-06-27 22:45:54.267673
One year from now Date: 2021-06-27 22:45:54.267673
Three days before Date: 2020-06-24 22:45:54.267673

Главные критерии выбора плиткореза

В первую очередь необходимо определить цель покупки. Домашнему мастеру, который решил самостоятельно положить обычную керамическую плитку в квартире или доме, подойдет простой механический плиткорез. Но если требуется сделать в плитке много отверстий под коммуникации, то стоит присмотреться к моделям с балеринкой.

  1. Профессионалы ценят в инструменте несколько качеств. Он должен делать идеально ровный рез или пропил. При этом работа должна выполняться быстро и легко.

  2. Достаточно много времени мастеру приходится тратить на выполнение замеров. Поэтому модели с линейкой или лазерным лучом выглядят предпочтительнее. Добиться точности во время резания позволяют упоры.

  3. При выборе плиткореза следует учесть и наличие электросети в строящемся объекте. Если требуется поддерживать высокие темпы отделки при отсутствии электричества, на выручку придет инструмент с аккумуляторным приводом.

В наш обзор попали лучшие плиткорезы. При составлении рейтинга учитывались следующие критерии:

  1. назначение инструмента;

  2. технические характеристики;

  3. цена;

  4. мнение экспертов;

  5. отзывы домашних мастеров.

Способы реализации параллельных вычислений в программах на Python.

Что такое параллелизм?

Параллелизм дает возможность работать над несколькими вычислениями одновременно в одной программе. Такого поведения в Python можно добиться несколькими способами:

  • Используя многопоточность ||, позволяя нескольким потокам работать по очереди.
  • Используя многопроцессорность ||. Делать сразу несколько вычислений, используя несколько ядер процессора. Это и называется параллелизмом.
  • Используя асинхронный ввод-вывод с модулем . Запуская какую то задачу, продолжать делать другие вычисления, вместо ожидания ответа от сетевого подключения или от операций чтения/записи.

Разница между потоками и процессами.

Поток — это независимая последовательность выполнения каких то вычислений. Поток делит выделенную память ядру процессора, а так же его процессорное время со всеми другими потоками, которые создаются программой в рамках одного ядра процессора. Программы на языке Python имеют, по умолчанию, один основной поток. Можно создать их больше и позволить Python переключаться между ними. Это переключение происходит очень быстро и кажется, что они работают параллельно.

Понятие процесс в — представляет собой так же независимую последовательность выполнения вычислений. В отличие от потоков , процесс имеет собственное ядро и следовательно выделенную ему память, которое не используется совместно с другими процессами. Процесс может клонировать себя, создавая два или более экземпляра в одном ядре процессора.

Асинхронный ввод-вывод не является ни потоковым (), ни многопроцессорным (). По сути, это однопоточная, однопроцессная парадигма и не относится к параллельным вычислениям.

У Python есть одна особенность, которая усложняет параллельное выполнение кода. Она называется GIL, сокращенно от Global Interpreter Lock. GIL гарантирует, что в любой момент времени работает только один поток. Из этого следует, что с потоками невозможно использовать несколько ядер процессора.

GIL был введен в Python потому, что управление памятью CPython не является потокобезопасным. Имея такую блокировку Python может быть уверен, что никогда не будет условий гонки.

Что такое условия гонки и потокобезопасность?

  • Состояние гонки возникает, когда несколько потоков могут одновременно получать доступ к общей структуре данных или местоположению в памяти и изменять их, в следствии чего могут произойти непредсказуемые вещи…

    Пример из жизни: если два пользователя одновременно редактируют один и тот же документ онлайн и второй пользователь сохранит данные в базу, то перезапишет работу первого пользователя. Чтобы избежать условий гонки, необходимо заставить второго пользователя ждать, пока первый закончит работу с документом и только после этого разрешить второму пользователю открыть и начать редактировать документ.

  • Потокобезопасность работает путем создания копии локального хранилища в каждом потоке, чтобы данные не сталкивались с другим потоком.

Алгоритм планирования доступа потоков к общим данным.

Как уже говорилось, потоки используют одну и ту же выделенную память. Когда несколько потоков работают одновременно, то нельзя угадать порядок, в котором потоки будут обращаются к общим данным. Результат доступа к совместно используемым данным зависит от алгоритма планирования. который решает, какой поток и когда запускать. Если такого алгоритма нет, то конечные данные могут быть не такими как ожидаешь.

Например, есть общая переменная . Теперь предположим, что есть два потока, и . Они выполняют следующие операции:

a = 2

# функция 1 потока
def thread_one():
    global a
    a = a + 2

# функция 2 потока
def thread_two():
    global a
    a = a * 3

Если поток получит доступ к общей переменной первым и вторым, то результат будет 12:

  1. 2 + 2 = 4;
  2. 4 * 3 = 12.

или наоборот, сначала запустится , а затем , то мы получим другой результат:

  1. 2 * 3 = 6;
  2. 6 + 2 = 8.

Таким образом очевидно, что порядок выполнения операций потоками имеет значение

Без алгоритмов планирования доступа потоков к общим данным такие ошибки очень трудно найти и произвести отладку. Кроме того, они, как правило, происходят случайным образом, вызывая беспорядочное и непредсказуемое поведение.

Есть еще худший вариант развития событий, который может произойти без встроенной в Python блокировки потоков GIL . Например, если оба потока начинают читать глобальную переменную одновременно… Оба потока увидят, что , а дальше, в зависимости от того какой поток произведет вычисления последним, в конечном итоге и будет равна переменная (4 или 6). Не то, что ожидалось!

Вызов sleep() в Tkinter и wxPython

Вызовы в Python можно добавить не только для приложений командной строки. При создании графического пользовательского интерфейса (GUI) периодически нужно добавлять отсрочки. К примеру, при создании приложения FTP для скачивания около миллиона файлов будет разумно добавить вызов между партиями, чтобы снизить нагрузку на сервер.

GUI код выполнит всю обработку в основном потоке, называемом циклом обработки событий, или event loop. При использовании внутри кода GUI заблокируется цикл обработки событий.

К счастью, помимо , можно использовать некоторые другие методы специально для этой задачи. Далее мы рассмотрим, как добавить вызовы в Tkinter и wxPython.

Python Interface¶

The module defines three convenience functions and a public class:

(stmt=’pass’, setup=’pass’, timer=<default timer>, number=1000000, globals=None)

Create a instance with the given statement, setup code and
timer function and run its method with number executions.
The optional globals argument specifies a namespace in which to execute the
code.

Changed in version 3.5: The optional globals parameter was added.

(stmt=’pass’, setup=’pass’, timer=<default timer>, repeat=5, number=1000000, globals=None)

Create a instance with the given statement, setup code and
timer function and run its method with the given repeat
count and number executions. The optional globals argument specifies a
namespace in which to execute the code.

Changed in version 3.5: The optional globals parameter was added.

Changed in version 3.7: Default value of repeat changed from 3 to 5.

()

The default timer, which is always .

Changed in version 3.3: is now the default timer.

datetime.datetime

Объект datetime.datetime содержит всю информацию объектов datetime.date плюс datetime.time. Давайте приведем несколько примеров, для лучшего понимания разницы между этим объектом, и объектом datetime.date.

Python

import datetime

a = datetime.datetime(2017, 3, 5)
print(a) # datetime.datetime(2017, 3, 5, 0, 0)

b = datetime.datetime(2017, 3, 5, 12, 30, 10)
print(b) # datetime.datetime(2017, 3, 5, 12, 30, 10)

d = datetime.datetime(2017, 3, 5, 12, 30, 10)
print(d.year) # 2017
print(d.second) # 10
print(d.hour) # 12

1
2
3
4
5
6
7
8
9
10
11
12

importdatetime

a=datetime.datetime(2017,3,5)

print(a)# datetime.datetime(2017, 3, 5, 0, 0)

b=datetime.datetime(2017,3,5,12,30,10)

print(b)# datetime.datetime(2017, 3, 5, 12, 30, 10)

d=datetime.datetime(2017,3,5,12,30,10)

print(d.year)# 2017

print(d.second)# 10

print(d.hour)# 12

Мы видим, что datetime.datetime принимает несколько дополнительных аргументов: год, месяц, день, час, минута и секунда. Это также позволяет вам указывать информацию о микросекундах и часовом поясе. При работе с базами данных, данные типы объектов будут использоваться достаточно часто. Большую часть вашей работы, вам нужно будет конвертировать форматы date или datetime Python в форматы SQL datetime или timestamp

Обратите внимание на то, что today совместно с datetime.datetime использует два разных метода:

Python

import datetime

a = datetime.datetime.today()
print(a) # datetime.datetime(2017, 4, 5, 0, 16, 54, 989663)

b = datetime.datetime.now()
print(b) # datetime.datetime(2017, 4, 5, 0, 17, 8, 24239)

1
2
3
4
5
6
7

importdatetime

a=datetime.datetime.today()

print(a)# datetime.datetime(2017, 4, 5, 0, 16, 54, 989663)

b=datetime.datetime.now()

print(b)# datetime.datetime(2017, 4, 5, 0, 17, 8, 24239)

Модуль datetime содержит другой метод, под названием strftime. Этот метод позволяет разработчику создавать строку, отображающую время в более понятной для человека форме. Существует целая таблица параметров форматирования, с которой рекомендуется ознакомиться в документации Python, в . Давайте взглянем на несколько примеров, показывающих всю полезность данного метода:

Python

import datetime

a = datetime.datetime.today().strftime(«%Y%m%d»)
print(a) # ‘20170405’

today = datetime.datetime.today()
print( today.strftime(«%m/%d/%Y») ) # ’04/05/2017′

print( today.strftime(«%Y-%m-%d-%H.%M.%S») ) # 2017-04-05-00.18.00

1
2
3
4
5
6
7
8
9

importdatetime

a=datetime.datetime.today().strftime(«%Y%m%d»)

print(a)# ‘20170405’

today=datetime.datetime.today()

print(today.strftime(«%m/%d/%Y»))# ’04/05/2017′

print(today.strftime(«%Y-%m-%d-%H.%M.%S»))# 2017-04-05-00.18.00

Первый пример – это скорее хитрость. В нем показано, как конвертировать сегодняшний объект datetime в строку, следующую за форматом YYYYMMDD (ГГГГММДД). Второй пример более наглядный.

В нем мы присваиваем объект datetime переменной под названием today и применяем два разных параметра форматирования строки. Первый параметр добавляет косые черточки между элементами datetime, а также перегруппировывает datetime, теперь он делится на месяц, день и год. В последнем примере мы создаем временную отметку, которая следует типичному формату: YYYY-MM-DD.HH.MM.SS. Если вам нужно указать год как двухзначный (“YY”), вы можете заменить %Y на %y.

Что дальше: многозадачность и оптимизация

Наша про­грам­ма уже рабо­та­ет как нуж­но, но её мож­но улуч­шить. Дело в том, что ста­вить весь код на пау­зу — не самое удач­ное реше­ние с точ­ки зре­ния про­из­во­ди­тель­но­сти. Пред­ставь­те, что вам нуж­но поста­вить себе несколь­ко напо­ми­на­ний на раз­ное вре­мя. С таким под­хо­дом нам при­дёт­ся выяс­нять, какое сра­бо­та­ет рань­ше, потом кор­рек­ти­ро­вать вре­мя пау­зы для сле­ду­ю­ще­го напо­ми­на­ния и так далее.

Мож­но сде­лать так: выно­сить напо­ми­на­ния в отдель­ные пото­ки. Это как под­про­грам­ма, кото­рая рабо­та­ет парал­лель­но с нашей про­грам­мой и не силь­но зави­сит от неё. Это поз­во­лит не ждать пер­во­го собы­тия, а запус­кать их одно­вре­мен­но. Но про всё это — в сле­ду­ю­щем материале.

Модуль time

Модуль time открывает разработчику Python доступ к нескольким связанным со временем функциям. Модуль основан на «эпохе», точке, с которой начинается время. Для систем Unix, эпоха началась в 1970 году. Чтобы узнать, какая эпоха в вашей системе, попробуйте запустить следующий код:

Python

import time
print(time.gmtime(0))

1
2

importtime

print(time.gmtime())

Результат

Python

time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=\
0, tm_wday=3, tm_yday=1, tm_isdst=0)

1
2

time.struct_time(tm_year=1970,tm_mon=1,tm_mday=1,tm_hour=,tm_min=,tm_sec=\

,tm_wday=3,tm_yday=1,tm_isdst=)

Я запустил его на Windows 7, которая также уверена в том, что начало времен датируется 1970м годом. В любом случае, в данном разделе мы ознакомимся со следующими функциями:

  • time.ctime
  • time.sleep
  • time.strftime
  • time.time

Приступим!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector