Python time Module: Sukatin ang Oras at Timestamp sa Log

1. Ano ang time module ng Python?

1.1 Pangkalahatang-ideya ng time module

Ang time module ng Python ay isa sa mga standard library na ginagamit para sa mga operasyon kaugnay ng oras at petsa sa loob ng programa. Ang module na ito ay kumukuha ng bilang ng segundo mula sa epoch (Enero 1, 1970 00:00:00 UTC) batay sa system clock, kaya ginagamit ito para maglagay ng timestamp sa mga log file, at para sukatin ang performance ng programa. Ang pangunahing benepisyo ng time module ay ang pagiging simple nito. Hindi kailangan ng kumplikadong setup, kaya madaling magsimula gamitin, na angkop para sa pangunahing pamamahala ng oras at pagsukat.

1.2 Pagpapakilala sa mga Pangunahing Tampok

Ang time module ay may iba’t ibang mga function na may kaugnayan sa oras. Ang mga pangunahing halimbawa ay ang mga sumusunod:
  • time.time(): Nagbabalik ng bilang ng segundo mula sa epoch bilang floating-point.
  • time.sleep(secs): Pinahihinto ang pagpapatakbo ng programa sa loob ng tinukoy na bilang ng segundo. Kapaki-pakinabang ito kapag nais mong pansamantalang ihinto ang proseso.
  • time.ctime(): Nagko-convert ng timestamp sa format na madaling basahin ng tao.
Sa pamamagitan ng paggamit ng mga function na ito, maaari kang magsagawa ng mga simpleng operasyon sa oras hanggang sa mga advanced na pagsukat.

2. Paraan ng Pagkuha ng Kasalukuyang Oras

2.1 Pagkuha ng Kasalukuyang Oras gamit ang time.time()

time.time() function ay nagbabalik ng bilang ng segundo mula sa epoch. Ang function na ito ay simple at ito ang pinaka-pangunahing paraan para kunin ang kasalukuyang oras. Narito ang isang halimbawa.
import time
current_time = time.time()
print(current_time)
Ang code sa itaas ay nagpapakita ng kasalukuyang epoch time (bilang ng segundo bilang floating-point). Ang epoch time ay karaniwang ginagamit sa loob ng programa para sa pagkalkula ng oras, ngunit dahil ito ay hindi madaling maunawaan ng tao, karaniwan itong ini-format gamit ang strftime() na ipapakita sa susunod na seksyon.

2.2 Pag-convert sa Format na Madaling Basahin ng Tao gamit ang strftime()

time.strftime() ay isang function na nagko-convert ng epoch time sa format ng taon, buwan, araw, oras, atbp. Kapaki-pakinabang ito lalo na sa mga log file o kapag kailangang ipakita ang oras. Ang sumusunod na code ay nagpapakita ng kasalukuyang oras sa format na “Taon-Buwan-Araw Oras:Minuto:Segundo”.
import time
formatted_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
print(formatted_time)
Sa halimbawang ito, ginagamit ang time.localtime() para i-convert ang kasalukuyang timestamp sa lokal na oras, at ini-format ito gamit ang strftime(). Ang %Y ay kumakatawan sa apat na digit na taon, %m ay buwan, at %d ay araw. Sa ganitong paraan, madaling mai-convert ang data ng oras sa format na madaling maintindihan ng tao.
侍エンジニア塾

3. Paano Sukatin ang Oras ng Pagproseso

3.1 Pagsukat ng Pangunahing Oras ng Pagproseso Gamit ang time.time()

Kapag sinusukat ang oras ng pagproseso, ang pinakamadaling paraan ay ang paggamit ng time.time(). Kinukuha nito ang oras ng pagsisimula at pagtatapos ng proseso, at sa pamamagitan ng pagkalkula ng pagkakaiba, sinusukat ang oras na nagamit.
import time
start_time = time.time()

# Halimbawa: Loop na Proseso
for i in range(1000000):
    pass

end_time = time.time()
print(f"Oras ng Pagproseso: {end_time - start_time} segundo")
Sa halimbawang ito, sinusukat ang oras na kinakailangan ng loop na proseso. Ang time.time() ay sumusukat ng oras sa segundo, kaya hindi ito napakataas ang katumpakan, ngunit sapat na ito para sukatin ang oras ng simpleng mga proseso.

3.2 Mas Mataas na Katumpakan sa Pagsukat Gamit ang perf_counter()

Kung kailangan ng mas mataas na katumpakan sa pagsukat, gamitin ang perf_counter(). Gamit nito, maaaring gamitin ang performance counter ng sistema para sa mas eksaktong pagsukat ng oras.
import time
start_time = time.perf_counter()

# Mas Mataas na Katumpakan sa Pagsukat
for i in range(1000000):
    pass

end_time = time.perf_counter()
print(f"Oras ng Pagproseso (Mataas na Katumpakan): {end_time - start_time} segundo")
Ang perf_counter() ay may katumpakan hanggang sa nanosecond, kaya ito ay perpekto para sa mga time-critical na aplikasyon at pag-optimize ng performance.

3.3 Benchmark Gamit ang Module na timeit

Kapag gagawa ng performance benchmark, kapaki-pakinabang ang timeit module. Ang module na ito ay paulit-ulit na nagpapatakbo ng isang tiyak na proseso at sinusukat ang average na oras ng pagproseso.
import timeit
print(timeit.timeit('"-".join(str(n) for n in range(100))', number=10000))
Sa code na ito, inuulit ang proseso ng pagsasama ng mga elemento ng listahan ng 10,000 beses at sinusukat ang average na oras ng pagproseso. Ang timeit ay nakakapagpababa ng ingay at nagbibigay ng tumpak na pagsukat, kaya ito ay angkop para sa paghahambing ng performance.

4. Pag-manipula ng Petsa: Paghahambing sa datetime module

4.1 Pagkuha ng kasalukuyang oras gamit ang datetime.now()

Kasama ng time module ng Python, napaka-kapaki-pakinabang din ang datetime module. Lalo na kapag kailangan ng mga operasyon na may kinalaman sa petsa at oras o pagkalkula ng petsa, ang datetime module ay angkop.
from datetime import datetime
now = datetime.now()
print(now)
Ang code na ito ay kumukuha ng kasalukuyang petsa at oras, at ipinapakita ito bilang isang datetime object. Sa datetime module, madaling maisagawa ang kalkulasyon ng oras at pamamahala ng time zone, kaya posible ang mas komplikadong pag-manipula ng petsa at oras.

4.2 Pagpili sa pagitan ng time module at datetime module

Ang time module ay simple at angkop para sa mataas na katumpakan ng pagsukat ng oras, ngunit para sa pag-manipula ng petsa at oras, mas angkop ang datetime module. Halimbawa, sa mga aplikasyon na humahawak ng tiyak na petsa o kailangang magsagawa ng kalkulasyon ng oras, mas maginhawa ang datetime module.
年収訴求

5. Praktikal na Halimbawa: Paggamit ng time Module

5.1 Paraan ng Pagdaragdag ng Timestamp sa Log

Madalas na nagdaragdag ng timestamp sa file ng log upang subaybayan ang mga pangyayari sa loob ng programa. time.ctime() gamit ito, madaling makuha ang kasalukuyang timestamp at irekord ito sa log.
import time
log_entry = f"{time.ctime()} - Mensahe ng Error"
print(log_entry)
Sa ganitong paraan, time.ctime() maaaring idagdag ang kasalukuyang oras sa log sa isang format na madaling basahin ng tao.

5.2 Pag-optimize ng Performance ng Programa

Kapag nag-o-optimize ng performance, maaaring gamitin ang pagsukat ng oras upang matukoy ang mga bottleneck na proseso. time module at timeit module, maaaring sukatin ang oras ng pagpapatakbo ng buong programa o ng partikular na function, at sa pamamagitan ng pag-optimize, posible ang pagpapabilis ng proseso.

6. Buod

Ang time module ng Python ay nagbibigay-daan sa napakasimpleng paghawak ng mga pangunahing operasyon sa oras, kaya’t kapaki-pakinabang sa iba’t ibang sitwasyon ng pag-develop ng programa. Mula sa mga pangunahing gawain tulad ng pagsukat ng oras ng pagproseso at pagdaragdag ng timestamp sa mga log file, hanggang sa mas advanced na pagsukat ng oras gamit ang perf_counter() at timeit module, nag-aalok ito ng malawak na hanay ng mga tampok. Lalo na sa mga gawain na may kinalaman sa pag-optimize ng performance at timing, ang time module ay isang madaling gamitin at makapangyarihang tool. Higit pa rito, kung kailangan ng mas kumplikadong paghawak ng petsa at oras, ang pagsasama ng datetime module ay nagpapadali sa pag-suporta sa time zone at detalyadong kalkulasyon ng petsa at oras. Sa pamamagitan ng pag-unawa sa mga katangian ng bawat module at paggamit ng mga ito nang naaayon, mapapabuti ang kahusayan at praktikalidad ng mga Python program.
侍エンジニア塾