De Python Timer Klasse begrijpen met voorbeelden

Python heeft duizenden modules en bibliotheken om aan de eisen van de coder te voldoen. Echter, om ze nuttig te maken, moet je ze eerst begrijpen en ze vervolgens toepassen. Zonder de voorkennis van bepaalde modules is het onzeker wat je wilt doen en wat de module eigenlijk doet. Tijd is een van de belangrijke factoren bij codeerproblemen. Alle codes zijn bedoeld om menselijk werk te verminderen met behulp van hun krachtige algoritmen. Time management heeft een grote impact op de analyse van de prestaties van uw code. Daarom leren we vandaag diepgaand hoe de timer werkt in Python.

Python Timer is een klasse/bibliotheek om de tijdscomplexiteit van uw code te beheren. Met behulp van meerdere tijdmodules kunt u een systeem in uw code maken om de tijd te controleren die nodig is voor het betreffende codefragment. Er zijn verschillende soorten timer implementaties in python volgens de behoeften van de gebruiker, namelijk, python timer functie (om script uitvoeringstijd te controleren), python threading timer (om de tijd die een thread nodig heeft om te voltooien controleren), python countdown timer (Maak een countdown timer) en fundamentele python tijd module (om te helpen met andere activiteiten).

al deze timerimplementatie werkt verschillend en richt zich op het bieden van verschillend gebruik aan de eindgebruiker. In deze post, we gaan door elke timer implementatie in detail. U kunt de inhoudsopgave gebruiken om naar de respectievelijke python timer-implementatie te springen.

catalogus

basis Python Timer functies

de belangrijkste module in python met betrekking tot tijd is tijd. Deze module bevat alle basisfuncties om de tijd te controleren en te analyseren. Deze analyse zal u helpen om de prestaties van uw code en de efficiëntie ervan te begrijpen. We gaan door elk van de belangrijke functies van deze module samen met zijn voorbeelden.

Hieronder volgen de basis Python timerfuncties met behulp van de tijdmodule–

  • tijd.tijd ()
  • tijd.thread_time ()
  • tijd.process_time ()
  • tijd.perf_counter ()
  • tijd.monotoon()

functie tijd.time

time.time() geeft de tijd in seconden (float) na de epoch terug. Over het algemeen is het tijdvak ingesteld op Januari 1, 1970, 00:00:00 (UTC), en het aantal seconden na deze Epoche wordt teruggegeven. Deze functie is afhankelijk van de computer tijd voor het berekenen van het aantal seconden. Als je de computer tijd tussen de python uitvoering verandert, kun je rare getallen krijgen met behulp van deze functie.

voorbeeld–

import timestart = time.time() #start timefor i in range(1000000): passend = time.time()print("Elapsed time is {}".format(end-start))

uitleg –

Ten eerste beginnen we met het importeren van de tijdmodule. Deze module bevat alle basis tijdfuncties die we in deze sectie zullen gebruiken. Aan het begin van de code verklaren we de start variabele als time.time(). Dit zal de huidige tijd van CPU opslaan in float nummer van de epoch. We zullen deze start variabele gebruiken als referentiepunt om de tijd te meten. Het volgende deel bevat alle codes die je wilt gebruiken (in dit voorbeeld hebben we a Voor loops gebruikt). Op dezelfde manier, noteer de eindtijd van de CPU (standaardtijd) en controleer de totale uitvoertijd met behulp van end – start.

Hiermee wordt de tijd die de code in beslag neemt in seconden afgedrukt. Met behulp van deze techniek kunt u de tijd die uw code in beslag neemt, controleren. Het enige probleem met deze methode is dat de CPU tijd kan worden gewijzigd terwijl de code wordt uitgevoerd. Dit zal resulteren in problematisch gedrag in python timer.

Functietijd.Thread_time

time.thread_time() geeft de som van systeem-en CPU-tijd (float) in de huidige draaiende thread. Bovendien bevat het niet de tijd die u doorbrengt in de functie time.sleep(). Omdat de functie thread-specifiek is, kunt u deze functie gebruiken om de tijdsverschillen op te nemen zolang de tijdverwijzingen tot dezelfde thread behoren.

voorbeeld–

import timeimport threadingend = Nonestart = Nonedef hello(): global start, end start = time.thread_time() x = 0 while x < 10000000: pass x += 1 end = time.thread_time()t = threading.Thread(target = hello, args = ())t.start() t.join()print("The time spent is {}".format(end - start))

uitleg –

aangezien de thread_time thread-specifieke tijd retourneert, moeten we ervoor zorgen dat we referenties in dezelfde thread gebruiken. Voor dit doel hebben we de draad van functie ‘Hallo’ geinstalleerd en de tijd berekend die de draad erin nodig heeft. Zorg er echter voor dat je de huidige tijd niet kunt krijgen door thread_time() aan te roepen omdat het een fractionele waarde retourneert. Maar je kunt zeker het verschil tussen twee opeenvolgende verwijzingen controleren, zolang ze in dezelfde thread thuishoren.

Functietijd.Process_time

time.process_time() geeft de tijdreferentie in fractionele seconden (float) van de som van de systeemtijd en de CPU-tijd van de huidige voortgang. Hetzelfde als thread_time, meet deze functie niet de tijd die wordt doorgebracht in de functie time.sleep(). Bovendien creëert deze functie een referentie gebaseerd op het proces. Als gevolg hiervan is alleen het tijdsverschil tussen twee opeenvolgende verwijzingen zinvol.

voorbeeld–

from time import process_time, sleepiterations = 100000start = process_time() for i in range(iterations): print(i, end=" ") # Stop the stopwatch / counter end = process_time()print(end, start)print("Elapsed time in seconds:", end-start)

uitleg –

we beginnen met het importeren van de process_time functie en registreren de begin – en eindtijd tussen de code. Het enige verschil tussen legacy time.time() en time.proces_time() is dat de verwerkingstijd De tijdreferenties van het huidige proces registreert, terwijl time() de absolute tijd van het systeem registreert.

Functietijd.Perf_counter

Perf Counter staat voor Performance Counter. Deze functie retourneert de hoge resolutie waarde van de tijd, die geldig is voor een korte periode. Deze functie wordt gebruikt om de precieze tijdtelling tussen twee referenties te krijgen. Omdat andere python-timerfuncties geen slaaptijd bevatten, omvat perf_counter deze ook niet. Laten we naar een voorbeeld gaan –

voorbeeld–

from time import perf_counter, sleep # integer input from user, 2 input in single linen = 3 # Start the stopwatch / counter start = perf_counter() for i in range(n): sleep(1)end = perf_counter() print("Elapsed time in seconds:", end-start) 

uitleg –

u kunt de perf-teller op dezelfde manier gebruiken als de procestimer of thread timer. Het enige verschil is, perf teller zal een hoge precieze waarde van de verstreken tijd terug te keren. Maar zorg ervoor dat u dit tussen kleine processen, want het maakt gebruik van hoge precisie. We hebben een eenvoudige lus gebruikt om de tijd te controleren.

Functietijd.monotoon

monotoon is een Python timer die niet terug kan gaan. Bij het uitvoeren van een python script, kan de tijd worden gewijzigd door de gebruiker en kan een groot verschil maken in de implementatie van de timer in python. Maar monotone timer zorgt ervoor dat de tijd verwijzingen aan te passen aan de externe veranderingen.

voorbeeld–

from time import monotonic, sleep # integer input from user, 2 input in single linen = 3 # Start the stopwatch / counter start = monotonic() for i in range(n): sleep(1)end = monotonic() print("Elapsed time in seconds:", end-start) 

uitleg –

we importeren eerst de monotone functie uit de tijdmodule. Maak vervolgens twee referenties met de naam begin en einde in de boven-en onderkant van de code. Dit zal de tijd tussen de twee referenties meten en alle externe wijzigingen in de systeemtijden vermijden.

aangepaste Python Timer klassen

u kunt uw eigen aangepaste timer klasse om dingen te doen volgens uw behoefte. Een belangrijk voordeel van het maken van een aangepaste klasse is dat u kunt beheren de hele tijd in een enkele regel. U hoeft niet elke keer de tijdklasse te importeren en de referenties op te nemen. Bovendien kunt u uw gegevens dumpen en alle vroegere tijduitvoeringen opnemen om het beste algoritme voor u te kiezen.

deze sectie zal een aangepaste klasse maken om de tijd te beheren en alle tijdverschillen in uw codes te loggen. Laten we er recht in duiken –

Timer.py–

we beginnen met het importeren van de tijdmodule. Initialiseer vervolgens de python Timer klasse en begin met het definiëren van de attributen en methoden. Tot nu toe hebben we alleen het basisattribuut toegevoegd om een beginreferentie van de klasse te behouden. Om het complexer te maken, kunt u meerdere attributen maken. Tot nu toe zijn er drie methoden hieronder vermeld–

  1. start – (optioneel) om de timer te starten.
  2. log-om de huidige verstreken tijd met betrekking tot starttijd te loggen.
  3. mijlpaal-de timer opnieuw instellen en de telling starten vanaf 0.
import timeclass Timer: def __init__(self): self.start = time.time() def start(self): self.start = time.time() def log(self): logger = time.time() - self.start print('Time log -',logger) def milestone(self): self.start = time.time()

example.py –

voorbeelden van gebruik van de bovenstaande klasse worden hieronder gegeven. Zoals u kunt zien, kunt u uw code schoon te houden door het creëren van een aangepaste Timer klasse en verhoging van de flexibiliteit.

import timertime = timer.Timer()for i in range(1000000):passp = 1time.log()for i in range(1000000):passp = 1time.log()

uitvoer–

Time log - 0.054854631423950195Time log - 0.10871052742004395

Python Timer met Threading

wanneer we een bepaalde operatie willen uitvoeren of onze functie na een bepaalde tijd willen laten draaien, maken we gebruik van de Python Timer klasse. De timer klasse is een subklasse van de threading klasse. Technisch gezien kun je zeggen dat we Timerobjecten maken als we acties (functies) willen die Begrensd worden door de tijd.

bijvoorbeeld, stel dat we een quiz willen organiseren, waarbij de deelnemer elke vraag in 10 seconden moet beantwoorden. Hier kunnen we een timer maken die op de achtergrond draait, en ondertussen zal de deelnemer nadenken over het antwoord. Nu, laten we begrijpen hoe je een timer object te maken.

syntaxis van Timer Class in Python

als u niet hebt begrepen wat Timer class doet, kunt u het zo zien – een Timer Class roept een functie aan na het opgegeven aantal seconden.

om een timer te starten, moeten we de start () aanroepen(net als normale threads), en om de timer te stoppen terwijl hij nog op de achtergrond staat, kunnen we cancel () aanroepen.

om de Timer-klasse te gebruiken, moeten we threading-klasse

threading importeren.Timer (interval, function, args=None, kwargs=None)

Parameters-

Interval– de tijd (in seconden) die u wilt wachten voordat u de volgende functie aanroept. Het kan in float of integer zijn. Bijvoorbeeld, gedurende 3 seconden, interval = 3.

functie – de functie die u wilt aanroepen na het opgegeven tijdsinterval.

een doordringende manier om *args en * * kwargs parameters te beschrijven is-Maak een timer object dat de functie uitvoert met argumenten’ args’ en trefwoord argumenten’ kwargs’ na interval seconden zijn verstreken. Args moet in de vorm van een lijst en0 trefwoord args of kwargs in de vorm van een woordenboek.

Return Type –

het roept gewoon de functie op die in de parameters is opgegeven.

methoden in Timerklasse

  1. start () – het betekent het begin van de uitvoering van de timer.
  2. Cancel () – tijdens de uitvoering van de timer kunnen we de cancel bellen als we het willen stoppen ().

een timer-Object aanmaken

a. Inzicht in de basis

om de werking van het Timerobject te begrijpen, maken we een klein programma om ons te helpen de basis van de klasse te begrijpen.

# Importing the Timer subclass from the threading Classfrom threading import Timer# creating a basic function that will print "hello"def hello(): print ("hello, world")# creating the object of the Timer subclass# Here, 5 sec means that the execution of the function="hello" after 5 secondst = Timer(interval=5.0, function=hello)# starting the executiont.start() # after 30 seconds, "hello, world" will be printed
Output-hello, world
python timer

u zult de werking van het bovenstaande programma beter begrijpen wanneer u het op uw eigen systeem probeert uit te voeren.

B. met behulp van de cancel methode

laten we zien hoe de cancel() functie van Timer klasse te gebruiken.

# Importing the Timer subclass from the threading Classfrom threading import Timer# creating a basic function that will print "hello"def hello(): print ("hello world") # creating the object of the Timer subclass# Here, 5 sec means that the execution of the function="hello" after 5 secondst = Timer(interval=5.0, function=hello) # starting the executiont.start() # after 30 seconds, "hello, world" will be printedprint("Execution begins")# cancelling the execution of the 'hello' functiont.cancel()print("END")
Execution begins END

c. Hoe de ‘args’ parameter van de python timer klasse

te gebruiken wanneer we de argumenten moeten geven aan de functie die aangeroepen moet worden, gebruiken we de args parameter. We moeten de argumenten in een array geven.

import threading# To take multiple inputs we can use *before the parameter.def print_name(*names): # From the array of names pick one name and print it for name in names: print("Hello",name)# In the args parameter, give an array of names t = threading.Timer(3, print_name,)# start the executiont.start()print("Execution begins...")

Execution begins...Hello AshwiniHello VandyHello Arijit

nu dat we veel hebben gesproken over de tijd, als een bonus, laten we een programma dat zal fungeren als een Countdown Timer.

Countdown Timer in python

met behulp van de tijdmodule

# We will use the time moduleimport time# Create a function that will print the timedef create_countdown_timer(time): print(time,"......")time_in_sec=int(input("Please entert the time in seconds:"))for times in range(time_in_sec): # call the function and pass the current time left create_countdown_timer(time_in_sec-times) # call the function in every 1 second. time.sleep(1) print("Time is up")
Please entert the time in seconds:77 ......6 ......5 ......4 ......3 ......2 ......1 ......Time is up

de Python Timer-Klasse gebruiken

# We will use the time moduleimport timefrom threading import Timer# Create a function that will print the timedef create_countdown_timer(time): print(time,"......")# Here you have to enter the time for which the timer will runtime_in_sec=int(input("Please enter the time in seconds:"))# For the first time we will call the function manuallycreate_countdown_timer(time_in_sec) for times in range(1,time_in_sec): # calling the Timer class every second t = Timer(1,create_countdown_timer,) t.start() time.sleep(1) print("\n Time is up") 
Please entert the time in seconds:1010 ......9 ......8 ......7 ......6 ......5 ......4 ......3 ......2 ......1 ......Time is up

Python-Timers als Context Managers

Context Managers zijn de beste manieren om geheugenfouten en daaropvolgende crashes te voorkomen. Iedereen moet hebben geweten over ” met ” de verklaring in Python. Deze verklaring zorgt ervoor dat we niet moeten zorgen voor veel objecten om zelfstandig te sluiten. Iedereen zou het kunnen hebben gebruikt met de combinatie van met en open() functie. Dus, over naar de hoofdvraag, kunnen we Context Managers maken voor Python Timers?

Ja. Door meerdere overloading functies, kunnen we eenvoudig onze eigen python timer maken als context manager in slechts een paar regels. Laten we beginnen met een voorbeeld waar je de tijd van het programma moet meten om te draaien. Zonder alle variabelen opnieuw te definiëren, kan één contextmanager herhaaldelijk worden gebruikt om de tijd meerdere keren te meten. Het volgende programma demonstreert het.

voorbeeld–

import timeclass Timer_Pythonpool(): """ Context manager as a python timer """ def __init__(self): self.start = None def __enter__(self): """ Notes the time at the start of the iteration """ self.start = time.time() return self def __exit__(self, exc_type, exc_value, exc_traceback): """ Prints the time taken at the end of the iteration """ print("Time to finish the task: ", time.time()-self.start) with Timer_Pythonpool() as timer: for i in range(1000000): x = 0 pass

uitvoer–

Time to finish the task: 0.05392050743103027

uitleg –

we beginnen met het aanmaken van een class genaamd “Timer_Pythonpool.”Vervolgens passen we de operators aan om ze nuttig te maken als contextmanager. __ enter_ _ functie voert uit aan het begin van de context, en __exit__ voert uit aan het einde van de context. Het creëren van een referentiepunt tussen deze twee functies kan je de exacte tijd geven die de context nodig heeft om uit te voeren.

Python Timer Decorators

Decorators zijn de extra ondersteuning voor elke soort functie. Ook wel aangeduid als metaprogramming, kunt u wijzigen/toevoegen functionaliteit aan het. Python Timer Decorators zijn de makkelijkste manier om de timer functies in python te implementeren. Eenmaal gedeclareerd, kunt u de decorateurs gebruiken in een lijn zonder ze zelfs te kennen. Toe te voegen aan het, kunt u ze toepassen op elke functie in uw code om te controleren welke code neemt de meeste tijd uit te voeren.

syntaxis –

om een kettingdecorator te maken, moet u meerdere geneste functies declareren. Noem de andere functie als uw belangrijkste decorateur naam en innerlijke om een willekeurige naam. De binnenfunctie haalt de referentie van de functie die onder de decorateur wordt gebruikt.

voorbeeld–

import timedef check_time(func): def inner(*args, **kwargs): start = time.time() func(*args, **kwargs) end = time.time() print("Time taken to execute function is ", end-start) return inner@check_timedef task(): # do something for i in range(10000000): x = 0 passtask()

uitvoer–

Time taken to execute function is 0.24933218955993652

uitleg –

zoals gewoonlijk beginnen we met het importeren van de belangrijkste module uit python “time.”Nextly, we creëren een decorateur genaamd” check_time.”Daarin voegen we een geneste innerlijke functie toe waar we de referenties van de tijd kunnen creëren. Deze twee referenties worden geplaatst zodat beide tussen de uitvoering van de functie worden geplaatst.

verder maken we een testfunctie genaamd “task” om te controleren of onze taak werkt. Voeg er dan een decorateur bovenop. Nu zal de decorateur zijn magie doen en afdrukken van de tijd die door de functie.

Python Timer Cooldown

Python Timer Cooldown is een manier om de timer achterwaarts te meten. Door het creëren van een aangepaste timer klasse, kunnen we de tijd op elk punt van uw code te loggen. U kunt deze klasse exporteren als een module en installeren als een afhankelijkheid in uw code. Dan met behulp van een enkele regel, kunt u het importeren–

import timeclass Timer: """ Timer class """ def __init__(self): self.start = time.time() ''' Restarts the timer. ''' def restart(self): self.start = time.time() ''' Returns the time elapsed and resets the counter. ''' def get_new_time(self): value = time.time() - self.start self.restart() return value ''' Prints the time elapsed and resets the counter. ''' def print_new_time(self): print (self.get_new_time()) ''' Returns the time elapsed (Does not reset the counter). ''' def get_time(self): return time.time() - self.start self.restart() ''' Prints the time elapsed (Does not reset the counter). ''' def print_time(self): print(self.get_time()) ''' Returns the time elapsed in HH:mm:ss (Does not reset the counter). ''' def get_time_hhmmss(self): end = time.time() m, s = divmod(end - self.start, 60) h, m = divmod(m, 60) time_str = "%02d:%02d:%02d" % (h, m, s) return time_strtimer = Timer() #Initialize the timer#wash clothes for 5 secondstimer.print_time() #Print the time elapsed since Initialization (in seconds)#dry clothes for 3 secondstimer.print_new_time() #Print the time elapsed since Initialization and reset the timer#burn clothes for 10 secondsprint(str('Task done for ' + str(timer.get_time()) + ' seconds.'))

andere Python Timer Modules

Python bevat duizenden modules en miljoenen codefragmenten. We kunnen altijd de open-source modules gebruiken om python timers te gebruiken. Github is de grootste plaats om dergelijke modules te vinden. Laten we recht in deze modules springen–

  1. termdown: een geavanceerde python timer gemaakt met behulp van verschillende ASCII tekens. Met behulp van dit script, kunt u een eenvoudige countdown timer in uw terminal te maken en een commando uit te voeren aan het einde. Belangrijker nog, het heeft ondersteuning voor voice countdown.
  2. MobTimer.Python: een GUI gebaseerde timer gemaakt in python. Dit script maakt volledig scherm gebaseerde timers met meerdere opties. Samen met het, kunt u meerdere timers draaien op uw scherm op hetzelfde moment met behulp van dit programma.
  3. timer: Dit is de meest basale GUI gebaseerde timer gemaakt in python (Tkinter). Functies zoals meerdere timers, labels en multithreading maken het meer levensvatbaar dan andere programma ‘ s.
  4. codetiming: deze timer klasse registreert alle uitvoertijden in het verleden voor een specifiek genoemd proces. U kunt de minimale tijd, maximale tijd, tussentijd, en mediane tijd voor het specifieke proces te controleren, samen met records. Deze module kan op meerdere manieren worden gebruikt, namelijk als contextmanager en als decorateur.
  5. cTimer: cTime is een nanoseconde-precisietimer in python. Deze module maakt gebruik van de C language API om de tijd precies vast te leggen. Als u op zoek bent naar een hardcore precisie tijd opname modules, Dit is de beste. (Opmerking: in recente updates van python wordt de tijdmodule toegevoegd met functies om de tijd in nanoseconden op te nemen)

moet lezen:

  • hoe tekenreeks in kleine letters te converteren in
  • hoe vierkantswortel te berekenen
  • User Input / Input () Function / Keyboard Input
  • beste boek om Python te leren

conclusie

meestal gebruikt iedereen timers voor drie doeleinden. De eerste is, om de tijd op te nemen voor de uitvoering van je code. En de tweede is, om een herinnering voor iets toe te voegen met behulp van een timer. Gelukkig kunnen beide worden gemaakt in Python. Door verschillende modules en bibliotheken te gebruiken, kunt u ervoor zorgen dat u de tijd nauwkeurig registreert.

Last but not least, de timer is een subklasse van de threading Class in python. Als we een functie na een bepaalde tijdsinterval willen uitvoeren, kunnen we de python timer Klasse gebruiken. In de parameter args, die standaard geen is, kunnen we de argumenten specificeren die we aan de callback methode willen geven.

probeer de programma ‘ s aan uw kant te draaien en laat het ons weten als u vragen hebt.

You might also like

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.