10 Überraschende Dinge, die Sie mit Pythons Zeitmodul machen können10 Überraschende Dinge, die Sie mit Pythons Zeitmodul machen können
Bild von Editor | Chatgpt

# Einführung

Die meisten Python -Entwickler sind mit dem vertraut time Modul für seine praktischen Funktionen wie z. time.sleep(). Dadurch macht das Modiule die Anlaufstelle für die Ausführung, ein einfaches, aber essentielles Werkzeug. Allerdings die time Das Modul ist weitaus vielseitiger und bietet eine Reihe von Funktionen für präzise Messungen, Zeitumwandlungen und Formatierung, die oft unbemerkt bleiben. Durch die Erforschung dieser Funktionen können effizientere Möglichkeiten für zeitbezogene Aufgaben in Ihrer Datenwissenschaft und anderen Codierungsprojekten eröffnet werden.

Ich habe einen Flack für die Benennung früherer „10 überraschender Dinge“ -artikel bekommen, und ich verstehe es. „Ja, es ist sehr überraschend, dass ich mit dem DateTime -Modul Datums- und Zeitaufgaben ausführen kann, danke.“ Gültige Kritik. Der Identify klebt jedoch, weil er eingängig ist, additionally kümmern Sie sich damit darum 🙂

In jedem Fall sind hier 10 überraschende und nützliche Dinge, die Sie mit Python machen können time Modul.

# 1. messen Sie die verstrichene Wandverkleidungszeit genau mit time.monotonic()

Während Sie automatisch für sich gehen können time.time() Um zu messen, wie lange eine Funktion dauert, hat sie einen kritischen Fehler: Sie basiert auf dem Systemuhrdie manuell oder durch Netzwerkzeitprotokolle geändert werden können. Dies kann zu ungenauen oder sogar negativen Zeitunterschieden führen. Eine robustere Lösung ist time.monotonic(). Diese Funktion gibt den Wert einer monotonischen Uhr zurück, die nicht rückwärts gehen kann und von Systemzeitaktualisierungen nicht beeinflusst wird. Dies macht es wirklich zur idealen Wahl, um die Dauer zuverlässig zu messen.

import time

start_time = time.monotonic()

# Simulate a process
time.sleep(2)

end_time = time.monotonic()
period = end_time - start_time

print(f"The duty took {period:.2f} seconds.")

Ausgabe:

The duty took 2.01 seconds.

# 2. Messen Sie die CPU -Verarbeitungszeit mit time.process_time()

Manchmal kümmert Sie sich nicht um die Gesamtzeit (die Zeit des Wandverkaufs). Stattdessen möchten Sie vielleicht wissen, wie viel Zeit die CPU tatsächlich für die Ausführung Ihres Codes aufgewendet hat. Dies ist entscheidend für die Effizienz des Benchmarking -Algorithmus, da es die Zeit ignoriert, die Sie mit dem Schlafengehen oder dem Warten auf E/A -Operationen aufgewendet haben. Der time.process_time() Die Funktion gibt die Summe des Programs und der Benutzer -CPU -Zeit des aktuellen Prozesses zurück und liefert ein reines Maß für den Rechenaufwand.

import time

start_cpu = time.process_time()

# A CPU-intensive process
whole = 0
for i in vary(10_000_000):
    whole += i

end_cpu = time.process_time()
cpu_duration = end_cpu - start_cpu

print(f"The CPU-intensive process took {cpu_duration:.2f} CPU seconds.")

Ausgabe:

The CPU-intensive process took 0.44 CPU seconds.

# 3. Holen Sie sich hochpräzissive Zeitstempel mit time.perf_counter()

Für ein sehr präzises Timing, insbesondere für sehr kurze Dauern,, time.perf_counter() ist ein wesentliches Werkzeug. Es gibt den Wert eines hochauflösenden Leistungsschalters zurück, der die genaueste Uhr auf Ihrem System ist. Dies ist eine systemweite Zählung, einschließlich der Zeit im Schlaf verstrichen, was es perfekt für Benchmark-Szenarien macht, in denen jede Nanosekunden zählt.

import time

start_perf = time.perf_counter()

# A really quick operation
_ = (x*x for x in vary(1000))

end_perf = time.perf_counter()
perf_duration = end_perf - start_perf

print(f"The quick operation took {perf_duration:.6f} seconds.")

Ausgabe:

The quick operation took 0.000028 seconds.

# V. time.ctime()

Die Ausgabe von time.time() ist ein Float, der Sekunden seit der „Epoche“ darstellt (1. Januar 1970 für Unix -Systeme). Obwohl es für Berechnungen nützlich ist, ist es nicht menschlich lesbar. Der time.ctime() Die Funktion nimmt diesen Zeitstempel auf und wandelt sie in ein Customary-Lesen-String-Format wie ‚Thu 31. Juli 16:32:30 2025‘ um.

import time

current_timestamp = time.time()
readable_time = time.ctime(current_timestamp)

print(f"Timestamp: {current_timestamp}")
print(f"Readable Time: {readable_time}")

Ausgabe:

Timestamp: 1754044568.821037
Readable Time: Fri Aug  1 06:36:08 2025

# 5. Zeit an einer Schnur mit analysieren time.strptime()

Angenommen, Sie haben Zeitinformationen, die als Zeichenfolge gespeichert sind und sie zur weiteren Verarbeitung in ein strukturiertes Zeitobjekt umwandeln müssen. time.strptime() (String -Parse -Zeit) ist Ihre Funktion. Sie geben die Zeichenfolge und einen Formatcode an, der angibt, wie die Datums- und Zeitkomponenten angeordnet sind. Es gibt a zurück struct_time Objekt, ein Tupel mit Elementen – wie Jahr, Monat, Tag usw. -, das dann extrahiert werden kann.

import time

date_string = "31 July, 2025"
format_code = "%d %B, %Y"

time_struct = time.strptime(date_string, format_code)

print(f"Parsed time construction: {time_struct}")
print(f"12 months: {time_struct.tm_year}, Month: {time_struct.tm_mon}")

Ausgabe:

Parsed time construction: time.struct_time(tm_year=2025, tm_mon=7, tm_mday=31, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=212, tm_isdst=-1)
12 months: 2025, Month: 7

# 6. Formatzeit in benutzerdefinierte Zeichenfolgen mit time.strftime()

Das Gegenteil von Parsen ist Formatierung. time.strftime() (String -Formatzeit) nimmt a struct_time Objekt (wie das von zurückgegeben von strptime oder localtime) und formatiert es in eine Zeichenfolge gemäß Ihren angegebenen Formatcodes. Dies gibt Ihnen die volle Kontrolle über die Ausgabe, unabhängig davon, ob Sie „2025-07-31“ oder „Donnerstag, 31. Juli“ bevorzugen.

import time

# Get present time as a struct_time object
current_time_struct = time.localtime()

# Format it in a customized approach
formatted_string = time.strftime("%Y-%m-%d %H:%M:%S", current_time_struct)
print(f"Customized formatted time: {formatted_string}")

day_of_week = time.strftime("%A", current_time_struct)
print(f"At the moment is {day_of_week}.")

Ausgabe:

Customized formatted time: 2025-08-01 06:41:33
At the moment is Friday

# 7. Erhalten Sie grundlegende Zeitzone -Informationen mit time.timezone Und time.tzname

Während die datetime Modul (und Bibliotheken mögen Pytz) sind besser für eine komplexe Zeitzonehandhabung, die time Modul bietet einige grundlegende Informationen. time.timezone Bietet den Versatz der örtlichen Nicht-DST-Zeitzone (Tageslicht-Ersparnis) in Versatz Sekunden westlich von UTC, während time.tzname ist ein Tupel, das die Namen der lokalen Nicht-DST- und DST-Zeitzone enthält.

import time

# Offset in seconds west of UTC
offset_seconds = time.timezone

# Timezone names (customary, daylight saving)
tz_names = time.tzname

print(f"Timezone offset: {offset_seconds / 3600} hours west of UTC")
print(f"Timezone names: {tz_names}")

Ausgabe:

Timezone offset: 5.0 hours west of UTC
Timezone names: ('EST', 'EDT')

# 8. zwischen UTC und Ortszeit umwandeln mit time.gmtime() Und time.localtime()

Die Arbeit mit verschiedenen Zeitzonen kann schwierig sein. Eine gängige Praxis besteht darin, alle Zeitdaten in koordinierter Common Time (UTC) zu speichern und sie nur für die Anzeige in lokale Zeit umzuwandeln. Der time Modul erleichtert dies mit time.gmtime() Und time.localtime(). Diese Funktionen nehmen in Sekunden einen Zeitstempel und geben eine zurück struct_time Objekt – gmtime() Gibt es in UTC zurück, während localtime() Gibt es für die konfigurierte Zeitzone Ihres Programs zurück.

import time

timestamp = time.time()

# Convert timestamp to struct_time in UTC
utc_time = time.gmtime(timestamp)

# Convert timestamp to struct_time in native time
local_time = time.localtime(timestamp)

print(f"UTC Time: {time.strftime('%Y-%m-%d %H:%M:%S', utc_time)}")
print(f"Native Time: {time.strftime('%Y-%m-%d %H:%M:%S', local_time)}")

Ausgabe:

UTC Time: 2025-08-01 10:47:58
Native Time: 2025-08-01 06:47:58

# 9. Führen Sie die Umkehrung von durch time.time() mit time.mktime()

time.localtime() konvertiert einen Zeitstempel in a struct_time Objekt, was nützlich ist … aber wie gehst du in die umgekehrte Richtung? Der time.mktime() Funktion macht genau das. Es braucht a struct_time Objekt (die lokale Zeit darstellt) und konvertiert es wieder in eine schwimmende Punktzahl, die Sekunden seit der Epoche darstellt. Dies ist dann nützlich, um zukünftige oder vergangene Zeitstempel zu berechnen oder das Datum der Arithmetik durchzuführen.

import time

# Get present native time construction
now_struct = time.localtime()

# Create a modified time construction for one hour from now
future_struct_list = listing(now_struct)
future_struct_list(3) += 1 # Add 1 to the hour (tm_hour)
future_struct = time.struct_time(future_struct_list)

# Convert again to a timestamp
future_timestamp = time.mktime(future_struct)

print(f"Present timestamp: {time.time():.0f}")
print(f"Timestamp in a single hour: {future_timestamp:.0f}")

Ausgabe:

Present timestamp: 1754045415
Timestamp in a single hour: 1754049015

# 10. Holen Sie sich die threadspezifische CPU-Zeit mit time.thread_time()

In Multi-Thread-Anwendungen, time.process_time() gibt Ihnen die gesamte CPU -Zeit für den gesamten Prozess. Aber was ist, wenn Sie die CPU -Verwendung eines bestimmten Threads profilieren möchten? In diesem Fall, time.thread_time() ist die Funktion, nach der Sie suchen. Diese Funktion gibt die Summe der System- und Benutzer -CPU -Zeit für die zurück Aktueller Threadsodass Sie feststellen können, welche Threads am rechenintensivsten sind.

import time
import threading

def worker_task():
    start_thread_time = time.thread_time()

    # Simulate work
    _ = (i * i for i in vary(10_000_000))

    end_thread_time = time.thread_time()

    print(f"Employee thread CPU time: {end_thread_time - start_thread_time:.2f}s")

# Run the duty in a separate thread
thread = threading.Thread(goal=worker_task)
thread.begin()
thread.be a part of()

print(f"Complete course of CPU time: {time.process_time():.2f}s")

Ausgabe:

Employee thread CPU time: 0.23s
Complete course of CPU time: 0.32s

# Einpacken

Der time Modul ist ein integrales und leistungsstarkes Phase der Standardbibliothek von Python. Während time.sleep() ist zweifellos seine berühmteste Funktion, seine Fähigkeiten für das Timing, die Dauermessung und die zeitliche Formatierung machen es zu einem praktischen Werkzeug für alle möglichen praktisch nützlichen Aufgaben.

Wenn Sie über die Grundlagen hinausgehen, können Sie neue Tips lernen, um einen genaueren und effizienteren Code zu schreiben. Weitere fortgeschrittene, objektorientierte Datum und Uhrzeitmanipulation finden Sie auf unbedingt überraschende Dinge, die Sie mit dem machen können datetime Modul nächste.

Matthew Mayo (@Mattmayo13) hat einen Grasp -Abschluss in Informatik und ein Diplom in Information Mining. Als Geschäftsführer von Kdnuggets & Statologieund beitragen Redakteur bei Meisterschaft für maschinelles LernenMatthew zielt darauf ab, komplexe Datenwissenschaftskonzepte zugänglich zu machen. Zu seinen beruflichen Interessen zählen natürliche Sprachverarbeitung, Sprachmodelle, Algorithmen für maschinelles Lernen und die Erforschung der aufstrebenden KI. Er ist von der Mission getrieben, das Wissen in der Datenwissenschaftsgemeinschaft zu demokratisieren. Matthew kodiert seit seinem 6 -jährigen Lebensjahr.



Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert