Python tem milhares de módulos e bibliotecas para satisfazer as exigências do codificador. No entanto, para torná-los úteis, você tem que entendê-los primeiro e depois aplicá-los. Sem o conhecimento prévio de certos módulos, é incerto o que você quer fazer e o que o módulo realmente faz. O tempo é um dos fatores importantes nos problemas de codificação. Todos os códigos são feitos para reduzir o trabalho humano usando seus algoritmos poderosos. A gestão do tempo cria um grande impacto na análise do desempenho do seu código. É por isso que hoje, vamos aprender em profundidade sobre como o temporizador funciona em Python.
o temporizador Python é uma classe / biblioteca para gerir a complexidade temporal do seu código. Usando vários módulos de tempo, você pode criar um sistema em seu código para verificar o tempo tomado pelo respectivo excerto de código. Existem diferentes tipos de timer implementações de python de acordo com as necessidades do usuário, ou seja, python função de temporizador (para verificar a execução do script de tempo), python threading temporizador (para verificar o tempo gasto por um thread para terminar), python temporizador (criar um temporizador de contagem regressiva) e básico de python módulo de tempo (para ajudar com outras atividades).
todas estas funções de implementação de Temporizadores de forma diferente e centra-se em fornecer um uso diferente para o utilizador final. Neste post, vamos analisar todas as implementações do temporizador em detalhe. Você pode usar a tabela de conteúdos para saltar para a respectiva implementação do temporizador python.
catálogo
- funções básicas do temporizador Python
- hora da função.o tempo
- tempo de função.Thread_time
- tempo de função.Process_time
- tempo de função.Perf_counter
- tempo de função.monotônico
- Custom Python Timer Classes
- Temporizador Python usando Threading
- sintaxe da classe do temporizador em Python
- parâmetros –
- Return Type –
- métodos na classe de temporizador
- Criando um objecto Temporizador
- Temporizador de Contagem regressiva em python
- Usando o módulo de tempo de
- Usando o python Classe Timer
- Python Temporizadores como Contexto Gestores
- Python Timer Cooldown
- outros módulos de temporizador Python
- deve ler:
- Conclusão
funções básicas do temporizador Python
o módulo mais importante em python em relação ao tempo é o tempo. Este módulo contém todas as funções básicas para verificar o tempo e analisá-lo. Esta análise irá ajudá-lo a entender o desempenho do seu código e sua eficiência. Vamos passar por cada uma das funções importantes deste módulo junto com seus exemplos.
seguem-se as funções básicas do temporizador Python usando o módulo de tempo–
- tempo.tempo ()
- tempo.thread_time ()
- time.process_time ()
- tempo.perf_counter ()
- tempo.monotónico()
hora da função.o tempo
time.time()
devolve o tempo em segundos (flutuador) após a época. Geralmente, o epoch é ajustado a janeiro 1, 1970, 00:00:00 (UTC), e o número de segundos após esta época é retornado. Esta função depende do tempo do computador para calcular o número de segundos. Se você mudar o tempo de computador entre a execução python, você pode obter números estranhos usando esta função.Exemplo–
import timestart = time.time() #start timefor i in range(1000000): passend = time.time()print("Elapsed time is {}".format(end-start))
explicação –
primeiramente, começamos com a importação do módulo de tempo. Este módulo contém todas as funções básicas de tempo que vamos usar nesta seção. No início do Código, declararemos a variável inicial como time.time()
. Isto irá guardar o tempo actual da CPU no número flutuante a partir da época. Vamos usar esta variável start como ponto de referência para medir o tempo. A próxima parte contém todos os códigos que você deseja usar (neste exemplo, nós usamos um para loops). Da mesma forma, registe o tempo de fim da CPU (tempo padrão) e verifique o tempo de execução total usando o fim – início.
isto irá imprimir o tempo tomado pelo código em segundos. Com o uso desta técnica, você pode verificar o tempo tomado pelo seu código. O único problema com este método é que o tempo da CPU pode ser alterado enquanto o código está em execução. Isso resultará em comportamento problemático no temporizador python.
tempo de função.Thread_time
time.thread_time()
devolve a soma do tempo do sistema e do CPU (float) no tópico actual em execução. Além disso, não inclui o tempo que você gasta na função time.sleep()
. Como a função é específica de thread, você pode usar esta função para registrar as diferenças de tempo, desde que as referências de tempo pertencem ao mesmo thread.Exemplo–
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))
explicação –
como o thread_time devolve o tempo específico do tópico, temos de nos certificar de usar referências no mesmo tópico. Para este fim, nós instanciamos o fio da função ‘hello’ e calculamos o tempo tomado pelo fio dentro dele. No entanto, certifique-se de que não consegue obter o tempo actual, chamando o thread_time() porque devolve um valor fraccional. Mas você pode definitivamente verificar a diferença entre duas referências consecutivas, desde que pertençam ao mesmo tópico.
tempo de função.Process_time
time.process_time()
devolve a referência temporal em segundos fraccionais (float) da soma do tempo do sistema e do tempo de CPU do progresso actual. O mesmo que thread_time, esta função não mede o tempo gasto na função time.sleep()
. Além disso, esta função cria uma referência baseada no processo. Como resultado disso, apenas a diferença horária entre duas referências consecutivas fará sentido.Exemplo–
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)
explicação –
começamos com a importação da função process_time e registramos o tempo de início e fim entre o código. A única diferença entre legado time.time()
e time.proces_time()
é que o tempo de processamento registra as referências temporais do processo atual, enquanto time()
registra o tempo absoluto do sistema.
tempo de função.Perf_counter
Perf Counter significa Performance Counter. Esta função devolve o valor de alta resolução do tempo, que é válido por um curto período de tempo. Esta função é usada para obter a contagem de tempo precisa entre duas referências. Como outras funções do temporizador python não incluem o tempo de latência, perf_counter
também não o inclui. Passemos a um exemplo –
exemplo–
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)
explicação –
pode usar o contador perf da mesma forma que o temporizador do processo ou o temporizador do fio. A única diferença é que o contador perf retornará um alto valor preciso do tempo decorrido. Mas certifique-se de usar isso entre pequenos processos, pois ele usa alta precisão. Usamos um loop simples para verificar o tempo que leva.
tempo de função.monotônico
monotônico é um temporizador python que não pode retroceder. Ao executar um script python, o tempo pode ser alterado pelo Usuário e pode fazer uma grande diferença na implementação do temporizador em python. Mas o temporizador monotônico garante que as referências de tempo se ajustam às mudanças externas.Exemplo–
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)
explicação –
importamos primeiro a função monotónica do módulo Temporal. Em seguida, criar duas referências chamadas início e fim no lado superior e inferior do Código. Isto irá medir o tempo entre as duas referências e evitar todas as alterações externas ao tempo do sistema.
Custom Python Timer Classes
você pode criar a sua própria classe custom Timer para fazer as coisas de acordo com a sua necessidade. Uma vantagem principal de criar uma classe personalizada é que você pode gerenciar o tempo todo em uma única linha. Você não precisa importar a classe de tempo de cada vez e gravar as referências. Além disso, você pode descarregar seus dados e gravar todas as execuções do tempo passado para escolher o melhor algoritmo para você.
esta secção irá criar uma classe personalizada para gerir o tempo e registar todas as diferenças de tempo nos seus códigos. Vamos mergulhar nele –
Temporizador.py–
vamos começar com a importação do módulo de tempo. Em seguida, inicialize a classe do temporizador python e comece a definir os atributos e métodos. Até agora, só incluímos o atributo básico para manter uma referência inicial da classe. Para torná-lo mais complexo, você pode criar vários atributos. Até agora, existem três métodos listados abaixo–
- iniciar – (opcional) para iniciar o temporizador.
- log-to log-to log the current decurred time concerning start time.
- marco-para reiniciar o temporizador e iniciar a sua contagem a partir de 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 –
exemplos de Utilização da classe acima são apresentados abaixo. Como você pode ver, você pode manter o seu código limpo, criando uma classe de temporizador personalizado e aumentar a flexibilidade.
import timertime = timer.Timer()for i in range(1000000):passp = 1time.log()for i in range(1000000):passp = 1time.log()
resultado–
Time log - 0.054854631423950195Time log - 0.10871052742004395
Temporizador Python usando Threading
quando queremos realizar alguma operação ou queremos que a nossa função corra após um determinado período de tempo, fazemos uso da classe do temporizador Python. A classe do temporizador é uma subclasse da classe de threading. Tecnicamente, você pode dizer que criamos objetos Temporizadores quando queremos ações (funções) limitadas pelo tempo. Por exemplo, suponha que queremos organizar um questionário, onde o participante tem que responder a cada pergunta em 10 segundos. Aqui, podemos criar um temporizador que será executado em segundo plano, e enquanto isso, o participante estará pensando sobre a resposta. Agora, vamos entender como criar um objeto temporizador.
sintaxe da classe do temporizador em Python
se você não entendeu o que a classe do temporizador faz, você pode pensar nisso desta forma-uma classe do temporizador chama uma função após o número especificado de segundos.
para iniciar um temporizador, precisamos chamar o start () (tal como os tópicos normais), e para parar o temporizador enquanto ele ainda está em segundo plano, podemos chamar cancelar ().
para usar a classe de temporizador, precisamos importar classe de roscagem
roscagem.Temporizador (intervalo, função, args=nenhum, kwargs=nenhum)
parâmetros –
intervalo-o tempo (em segundos) que deseja esperar antes de invocar a próxima função. Pode estar em flutuador ou inteiro. Por exemplo, por 3 segundos, intervalo=3. Função
– a função que deseja chamar após o intervalo de tempo especificado.
uma forma invasiva de descrever * parâmetros args e * * kwargs é-criar um objeto temporizador que executa a função com argumentos’ args’ e argumentos de palavras-chave’ kwargs’ após o intervalo de segundos ter passado. Args deve ser na forma de uma lista e de uma palavra-chave args ou kwargs na forma de um dicionário.
Return Type –
It just calls the function specified in the parameters.
métodos na classe de temporizador
start () – significa o início da execução do temporizador.
Criando um objecto Temporizador
A. Entendendo o básico
para entender o trabalho do objeto Temporizador, vamos criar um pequeno programa para nos ajudar a entender o básico da classe.
# 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
Você vai entender melhor o funcionamento do programa acima quando você tentar executá-lo em seu próprio sistema.
B. Usando o método de cancelamento
vamos ver como usar a função de cancelamento () da classe de temporizador.
# 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. Como usar o parâmetro ‘args’ da classe do temporizador python
Quando precisamos dar os argumentos para a função que precisa ser chamada, usamos o parâmetro args. Devemos dar o argumento args em uma matriz.
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
agora que falamos muito sobre o tempo, como um Bônus, vamos fazer um programa que vai agir como um Cronómetro.
Temporizador de Contagem regressiva em python
Usando o módulo de tempo de
# 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
Usando o python Classe Timer
# 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 Temporizadores como Contexto Gestores
Contexto Gestores são as melhores formas de evitar erros de memória e subsequente falha. Toda a gente devia saber sobre “com” a declaração em Python. Esta declaração garante que não temos que cuidar de muitos objetos para fechar independentemente. Todos podem tê-lo usado com a combinação de com e função open (). Então, passando à questão principal, podemos criar gerentes de contexto para Timers Python?Sim. Devido a várias funções de sobrecarga, podemos facilmente criar o nosso próprio temporizador python como um gerenciador de contexto em apenas algumas linhas. Vamos começar com um exemplo onde você tem que medir o tempo do programa para correr. Sem redefinir todas as variáveis, um gerenciador de contexto pode ser usado repetidamente para medir o tempo várias vezes. O programa seguinte demonstra-o.Exemplo–
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
resultado–
Time to finish the task: 0.05392050743103027
Explanation-
We start by creating a class named ” Timer_Pythonpool.”Então nós personalizamos os operadores para torná-los úteis como um gerenciador de contexto. __introduzir_ _ _ função executa no início do contexto, e __sair__ executa no fim do contexto. Criar um ponto de referência entre estas duas funções pode dar-lhe o tempo exato tomado pelo contexto para executar.Decoradores de Temporizadores Python
decoradores são o suporte adicional para qualquer tipo de função. Também chamado de metaprogramação, você pode modificar / adicionar funcionalidade para ele. Os decoradores de Temporizadores Python são a maneira mais fácil de implementar as funções de temporizador em python. Uma vez declarado, você pode usar os decoradores em uma linha sem sequer conhecê-los. Adicionando a ele, você pode aplicá-los a cada função em seu código para verificar qual o código leva mais tempo para executar.
sintaxe –
para criar um decorador de acordes, é necessário declarar várias funções aninhadas. Nomeie a outra função como seu principal nome decorador e interior a qualquer nome aleatório. A função interna irá buscar a referência da função usada abaixo do decorador.Exemplo–
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()
resultado–
Time taken to execute function is 0.24933218955993652
explicação –
como de costume, começamos com a importação do módulo mais importante do tempo python.”Nextly, we create a decorator named” check_time.”Dentro dela, adicionamos uma função interna aninhada onde podemos criar as referências do tempo. Estas duas referências são colocadas para que ambas sejam colocadas entre a execução da função.Além disso, criamos uma função de teste chamada “tarefa” para verificar se a nossa tarefa funciona. Depois adiciona-lhe um decorador. Agora o decorador vai fazer a sua magia e imprimir o tempo que a função levou.
Python Timer Cooldown
Python Timer Cooldown é uma forma de medir o temporizador para trás. Ao criar uma classe de temporizador personalizado, podemos registrar a hora em cada ponto do seu código. Você pode exportar esta classe como um módulo e instalá-la como uma dependência em seu código. Então, usando uma única linha, você pode importá – lo–
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.'))
outros módulos de temporizador Python
Python contém milhares de módulos e milhões de excertos de código. Podemos sempre usar os módulos de código aberto para usar temporizadores python. O Github é o maior lugar para encontrar tais módulos. Vamos saltar para estes módulos–
- termdown: um temporizador avançado em python feito usando diferentes caracteres ASCII. Usando este programa, você pode criar um temporizador de contagem decrescente simples no seu terminal e executar um comando no final. Mais importante, tem suporte para contagem decrescente de voz.
- MobTimer.Python: um temporizador baseado em GUI feito em python. Este programa cria Temporizadores baseados no ecrã completo com várias opções. Junto com ele, você pode executar vários temporizadores em sua tela ao mesmo tempo, usando este programa.
- timer: Este é o temporizador mais básico baseado em GUI feito em python (Tkinter). Recursos como vários temporizadores, etiquetas e multi-listagem tornam-no mais viável em relação a outros programas.
- codetização: esta classe de temporizador regista todos os seus tempos de execução anteriores para um processo específico nomeado. Você pode verificar o tempo mínimo, o tempo máximo, entretanto, e o tempo mediano para o processo específico, juntamente com registros. Este módulo pode ser utilizado de várias formas, nomeadamente, como gestor de contexto e decorador.
- cTimer: cTime é um temporizador de precisão de nanossegundos em python. Este módulo usa a API da linguagem c para gravar o tempo com precisão. Se você está procurando um hardcore precision time recording módulos, este é o melhor. (Nota: nas atualizações recentes do python, o módulo de tempo é adicionado com funções para gravar o tempo em nanossegundos)
deve ler:
- Como Converter a String para Minúsculas em
- Como Calcular a Raiz Quadrada de
- Usuário de Entrada | Input () Função | Entrada de Teclado
- Melhor Livro para Aprender Python
Conclusão
Principalmente, todo mundo usa temporizadores para três propósitos. O primeiro a ser, a gravar o tempo para a sua execução de código. E o segundo ser, adicionar um lembrete para algo usando um temporizador. Felizmente, ambos podem ser criados em Python. Usando diferentes módulos e bibliotecas, você pode garantir que você grava o tempo com precisão de ponto.
Last but not the least, The timer is a subclass of the threading Class in python. Se quisermos executar qualquer função após um certo intervalo de tempo, podemos usar a classe do temporizador python. No parâmetro args, que não é nenhum por padrão, podemos especificar os argumentos que queremos dar ao método de callback.
tente executar os programas do seu lado e deixe-nos saber se você tem alguma dúvida.