W tym artykule prezentuję moduł "time" w języku Python, który udostępnia nam zestaw metod i wartości związanych z czasem ⏰. Jeżeli interesuje Cię ten temat, to zapraszam po darmową dawkę wiedzy 😄!

PRZEDSTAWIAM CO ZAWIERA W SOBIE MODUŁ "TIME" W JĘZYKU PYTHON!

Na początek wyjaśnimy sobie o co w ogóle się rozchodzi 😁, a potem przejdę do ukazania niektórych metod.

Z CZEGO SKŁADA SIĘ MODUŁ "TIME" W JĘZYKU PYTHON?

Moduł "time" jaki występuje w języku Python, pozwala na przeprowadzanie operacji dotyczących czasu rzeczywistego ⌚. Należy przez to rozumieć między innymi 👇:

  • pobieranie czasu z systemu operacyjnego,
  • pobieranie czasu od uruchomienia programu,
  • tworzenie opóźnienia działania programu w sekundach (tzw. "usypianie" 💤),
  • wyznaczanie daty w postaci "słownej" na podstawie liczby sekund (np. "3 marca, 2021 roku").

Pełne zestawienie możliwości modułu "time" możesz wyczytać z oficjalnej dokumentacji Pythona 📖.

Wyjaśniłem pokrótce o co chodzi, więc możemy przejść do praktyki 🙂.

JAK SKORZYSTAĆ Z MODUŁU "TIME" W JĘZYKU PYTHON?

Aby skorzystać z modułu "time" w języku Python, musimy go zaimportować ↩️. U samej góry skryptu, dopisz następujący wiersz 👇:

import time

To jest instrukcja importu ℹ️. Za jej pośrednictwem, uzyskujesz dostęp do modułów i ich zawartości 🔓.

Korzystając z samego słowa "import", dostęp obejmuje cały moduł bez wyjątku. Jeżeli interesuje Cię tylko jakaś pojedyncza metoda lub wartość, możesz skorzystać z dodatkowego słowa "from" i połączyć je ze słowem "import", pisząc w taki sposób 👇:

from time import [wartość/metoda występująca w module]

Oba zapisy różnie wpływają na odwoływanie się do składowych, a my poprzestaniemy na pierwszym w kolejności 1️⃣. Tłumaczenie słów "import" i "from" znajdziesz w osobnych artykułach ℹ️.

Mamy dostęp do modułu "time", to teraz dowiaduj się jakie metody w sobie posiada 🚀!

JAKIE METODY POSIADA "TIME" W JĘZYKU PYTHON?

Moduł "time" w Pythonie posiada w sobie między innymi następujące metody 👇:

  • time,
  • sleep,
  • gmtime,
  • strftime.

Przypomnę, że całą listę metod możesz poznać sięgając do oficjalnej dokumentacji Pythona 📖. A my w tym artykule, przyjrzymy się tylko tym wyżej wymienionym 😉.

TIME

Tak, jest metoda o tej samej nazwie, co sam moduł 😄. Ona odpowiada za zwrócenie liczby zmiennoprzecinkowej (z ułamkiem) oznaczającej liczbę upłyniętych sekund od tzw. "czasu uniksowego" 💥. Czas uniksowy oznacza konkretnie datę 1 stycznia, 1970 roku, którą przyjmuje się za "datę narodzin" pierwszego systemu operacyjnego w historii, Unix 😊! Ponieważ minęło już sporo lat od tamtej daty, spodziewaj się naprawdę ogromnej liczby 😅!

To jest przykład użycia 👇:

current_time_in_seconds = time.time()

Natomiast to niejedyny możliwy sposób użycia metody "time" 😮! Możemy dzięki niej, zmierzyć czas działania naszego programu ❤️! Wystarczy pobrać aktualny czas systemowy w dwóch różnych miejscach programu, a na samym końcu wykonać różnicę, odejmując pierwszy pomiar od drugiego 👇:

time_in_seconds_since_start = time.time()

# instrukcje

time_in_seconds_before_end = time.time()
program_duration_in_seconds = time_in_seconds_before_end - time_in_seconds_since_start

print(program_duration_in_seconds)

Tym sposobem uzyskujemy najprostszy czasomierz powstały z dwóch odnotowanych odcinków czasowych 😊!

Metoda "time" modułu "time" w języku Python

Metoda "time" zwraca liczbę upłyniętych sekund od "czasu uniksowego" (1 stycznia, 1970 roku) w postaci liczby zmiennoprzecinkowych (bez ułamka).

SLEEP

"sleep" odpowiada za dosłowne "usypianie" programu, lecz przekładając na prosty język, chodzi o wstrzymanie dalszego wykonywania instrukcji na czas podany w sekundach ✋. Gdy dla przykładu mamy taki zapis 👇:

print('Pojawiam się natychmiast')
time.sleep(1)
print('Pojawiam się po pewnym czasie!')

to po uruchomieniu, pierwszy łańcuch znaków pojawi się od razu, a drugi dopiero po upływie jednej sekundy 😮! Kiedy wykonuje się metoda "sleep", to jesteśmy "zablokowani" na podany czas i nie możemy nic zrobić, do momentu upłynięcia tego czasu ⏸.

Zaznaczam ważną rzecz ⚠️! To "usypianie" nie działa tak, jak możesz sobie wyobrażać 😳!  "sleep" istotnie dodaje opóźnienie do programu, natomiast bardziej przypomina sytuację zawieszenia się programu, po którym pojawia się komunikat systemu, że "aplikacja nie odpowiada" 😱! Ta metoda sprawia, że "zamrożony" jest cały program, a to oznacza, że na podany czas nie będzie reagował na jakiekolwiek bodźce od strony użytkownika ❌!

Jeżeli chciał(a)byś uzyskać efekt znany w grach, że masz określoną liczbę sekund na wykonanie czegoś, natomiast cała aplikacja działa "normalnie", to zdecydowanie nie jest właściwe podejście i trzeba stworzyć własny system do takich zadań ⚠️!

Metoda "sleep" modułu "time" w języku Python

Metoda "sleep" powoduje tymczasowe "zamrożenie" programu, co powoduje wstrzymanie wykonywania dalszych instrukcji na podaną liczbę sekund.

GMTIME

"gmtime" to metoda pobierająca aktualny czas jaki jest w zegarze Twojego systemu operacyjnego ⏰. O wiele ciekawszy jest format zwracanej wartości 🔥! Gdy wywołasz sobie tę metodę i podstawisz pod funkcję "print" 👇:

current_time = time.gmtime()

to Twoim oczom ujrzy się nie jedna wartość, a krotka z 9 wartościami (konkretniej, to typ "struct_time", lecz to wyjaśnię za moment 💥) 😱! Krotka to struktura danych zachowująca kolejność wprowadzonych do niej elementów, dopuszcza powtarzające się elementy i nie zezwala na ich modyfikację (więcej informacji o nich zostanie zawartych w odrębnym artykule ℹ️).

Postać tejże krotki przyjmie taką formę (w zależności od Twojego zegara w systemie, możesz dostrzec inny komplet wartości ⚠️) 👇:

time.struct_time(tm_year=2021, tm_mon=3, tm_mday=3, tm_hour=9, tm_min=46, tm_sec=54, tm_wday=2, tm_yday=62, tm_isdst=0)

Widać wyraźnie, że otrzymujemy zestaw przeróżnych wartości, nie tylko tak oczywistych, jak rok czy dzień miesiąca.

Oto co oznaczają poszczególne wartości 👇:

  1. tm_year (rok),
  2. tm_mon (miesiąc jako wartość od 1 do 12),
  3. tm_mday (dzień miesiąca jako wartość od 1 do 31 - "gmtime" potrafi zidentyfikować czy dany miesiąc ma mniej, niż 31 dni),
  4. tm_hour (godzina dnia jako wartość od 0 do 23, czyli gdy będzie południe, to pojawi się wartość 11 ⚠️),
  5. tm_min (minuta dnia jako wartość od 0 do 59),
  6. tm_sec (sekunda dnia jako wartość od 0 do 61 - zakres uwzględnia tzw. "sekundę przestępną" ℹ️),
  7. tm_wday (dzień tygodnia jako wartość od 0 do 6),
  8. tm_yday (dzień roku jako wartość od 1 do 366),
  9. tm_isdst (wartość określająca czy aktualnie obowiązuje czas letni: 1 = obowiązuje, 0 = nie obowiązuje, -1 = nie wiadomo czy obowiązuje ℹ️).

Możesz bez problemu odwołać się do każdej z nich stosując notację indeksową, tak jak w odniesieniu do elementów listy (modyfikowalnej struktury danych zezwalającej na duplikaty i zapamiętującej kolejność wprowadzanych do niej elementów ℹ️) 👍:

current_year = time.gmtime[0]

Ponieważ krotka zapamiętuje kolejność elementów, tak jak lista, masz pewność, że ona nigdy się nie zmieni 😊!

A teraz napiszę dokładniej pochodzenie takiej struktury!

SKĄD POCHODZI "STRUCT_TIME" W JĘZYKU PYTHON?

Python zaczerpnął wiele konstrukcji z języka C, a "struct_time" jest jedną z nich 😲! Cytując oficjalną dokumentację Pythona, jest to "interfejs nazwanej krotki" 👀. Nazwa pochodzi od nazwy konstrukcji występującej w języku C, "struct", a definicja samej struktury jaka obowiązuje w metodzie "gmtime" znajduje się w standardowej bibliotece języka C, w pliku nagłówkowym "time.h" 💥! To jest ten fragment (może się różnić w zależności od zainstalowanego kompilatora ⚠️) 👇:

#ifndef _TM_DEFINED
#define _TM_DEFINED
  struct tm {
    int tm_sec;
    int tm_min;
    int tm_hour;
    int tm_mday;
    int tm_mon;
    int tm_year;
    int tm_wday;
    int tm_yday;
    int tm_isdst;
  };
#endif

Jak łatwo zauważyć, postać jest identyczna 🔥! Jedyną różnicą jest kolejność składowych. Także postać struktury została zaczerpnięta z języka C, a sama nazwa została już nadana osobno 💡.

Metoda "gmtime" modułu "time" w języku Python

Metoda "gmtime" odpowiada za zwracanie aktualnego czasu systemowego w postaci krotki z 9 informacjami na temat czasu m.in. dzień miesiąca czy rok.

STRFTIME

Metoda o nietypowej nazwie "strftime" (prawdopodobnie skrót od "string formatted time" 🙂) służy do zwracania odpowiednio sformatowanego łańcucha znaków na podstawie niejakich "specyfikatorów" 🔥! Tutaj sięgamy terminologii aż do języka C będącego "ojcem języków wysokiego poziomu" 😮!

Najpierw pokażę bardzo prosty przykład, aby można było łatwiej tłumaczyć teorię 👇:

print(time.strftime('Teraz mamy %Y rok!', time.gmtime()))

Do metody "strftime" wprowadzamy 2 parametry 👇:

  1. łańcuch znaków ze specyfikatorami formatu (w tym przypadku jest tylko jeden jako "%Y"),
  2. krotka z 9 wartościami związanymi z czasem (tutaj korzystamy z metody "gmtime" 😉).

Kiedy program przejdzie do wykonywania tej metody, otrzymamy łańcuch znaków informujący który obecnie jest rok na podstawie Twojego zegara systemowego ❤️! Dzięki temu, nie musimy ręcznie "wyjmować" pojedynczych argumentów z krotki i wykonywać wielokrotnej konkatenacji łańcuchów 👍.

Ten fragment 👇:

%Y

to jest wspomniany specyfikator 🔥! Teraz można wprowadzić w temat teoretycznie 😝!

CZYM JEST SPECYFIKATOR W FORMATOWANIU ŁAŃCUCHÓW ZNAKÓW?

Specyfikator jest symbolem osadzonym wewnątrz łańcucha znaków będącym kombinacją znaku procent i odpowiedniej litery np. "%d" ℹ️. W trakcie przetwarzania takiego łańcucha przez daną funkcję, specyfikator staje się "gniazdem" dla argumentu podanego jako następny w kolejności i "zamieniony" na parametr "wstawiany" do łańcucha ⏏️. W związku z tym, nie zobaczymy na wyjściu tych specyfikatorów, tylko podane po łańcuchu formatującym wartości 💥! Gdy wszystkie wartości są "wstawione" do łańcucha w miejscach wyznaczonych przez specyfikatory, tak sformatowany łańcuch znaków jest zwracany jako wynik końcowy funkcji ✅.

Jeżeli jesteś bardziej zainteresowany(-a) tematem specyfikatorów, to zerknij na materiał opisujący funkcję "printf" w języku C, gdyż idea operowania na specyfikatorach w metodzie "strftime" pochodzi właśnie od tego języka 💡. A jak chcesz poznać pełną listę specyfikatorów obsługiwanych przez metodę "strftime" i w jaki sposób wpływają na otrzymany rezultatu, to znajdziesz ją w oficjalnej dokumentacji Pythona 📖.

Metoda "strftime" modułu "time" w języku Python

Metoda "strftime" formatuje podany łańcuch znaków poprzez "wszczepienie" wartości z krotki z informacji na temat czasu do łańcucha, w miejsce określonych specyfikatorów.


Koniec tematu 😊. Wiesz już, że do czego służy moduł "time" w języku Python i jakie posiada w sobie metody 💪!

PODOBNE ARTYKUŁY