Python'da zaman gecikmesini nas─▒l yapabilirim? [├žift]


Al─▒nan cevaba git


Bir Python beti─činde zaman gecikmesini nas─▒l koyaca─č─▒m─▒ bilmek istiyorum.


2611









Cevap say─▒s─▒n─▒ say: 12






 import time
time.sleep(5)   # Delays for 5 seconds. You can also use a float value.
 

─░┼čte dakikada yakla┼č─▒k bir kez bir ┼čeyin ├žal─▒┼čt─▒r─▒ld─▒─č─▒ ba┼čka bir ├Ârnek:

 import time
while True:
    print("This prints once a minute.")
    time.sleep(60) # Delay for 1 minute (60 seconds).
 

2839







Sen kullanabilirsiniz sleep() fonksiyonu time mod├╝l├╝ . ─░kinci saniye ├ž├Âz├╝n├╝rl├╝k i├žin de─či┼čken bir arg├╝man alabilir.

 from time import sleep
sleep(0.1) # Time in seconds
 

737


2008-09-15





Python'da zaman gecikmesini nas─▒l yapabilirim?

Tek bir i┼č par├žac─▒─č─▒nda uyku i┼člevini ├Âneririm :

 >>> from time import sleep

>>> sleep(4)
 

Bu i┼člev asl─▒nda i┼čletim sistemi taraf─▒ndan ├ža─čr─▒ld─▒─č─▒ ipli─čin i┼členmesini ask─▒ya al─▒r, di─čer di┼člerin ve i┼člemlerin uyurken y├╝r├╝t├╝lmesine izin verir.

Bu ama├ž i├žin kullan─▒n veya sadece bir fonksiyonun ├žal─▒┼čmas─▒n─▒ geciktirmek i├žin kullan─▒n. ├ľrne─čin:

 >>> def party_time():
...     print('hooray!')
... 
>>> sleep(3); party_time()
hooray!
 

"Ya┼čas─▒n!" Vurulduktan 3 saniye sonra yazd─▒r─▒l─▒yor Enter.

sleep ├çoklu i┼č par├žac─▒─č─▒ ve i┼člemlerle ├Ârnek kullanma

Yine, sleep i┼č par├žac─▒─č─▒n─▒z─▒ ask─▒ya al─▒r - s─▒f─▒r i┼člem g├╝c├╝n├╝n yan─▒nda kullan─▒r.

G├Âstermek i├žin, b├Âyle bir komut dosyas─▒ olu┼čturun (├Ânce etkile┼čimli bir Python 3.5 kabu─čunda denedim, ancak alt i┼člemler party_later baz─▒ nedenlerden dolay─▒ i┼člevi bulam─▒yor ):

 from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor, as_completed
from time import sleep, time

def party_later(kind='', n=''):
    sleep(3)
    return kind + n + ' party time!: ' + __name__

def main():
    with ProcessPoolExecutor() as proc_executor:
        with ThreadPoolExecutor() as thread_executor:
            start_time = time()
            proc_future1 = proc_executor.submit(party_later, kind='proc', n='1')
            proc_future2 = proc_executor.submit(party_later, kind='proc', n='2')
            thread_future1 = thread_executor.submit(party_later, kind='thread', n='1')
            thread_future2 = thread_executor.submit(party_later, kind='thread', n='2')
            for f in as_completed([
              proc_future1, proc_future2, thread_future1, thread_future2,]):
                print(f.result())
            end_time = time()
    print('total time to execute four 3-sec functions:', end_time - start_time)

if __name__ == '__main__':
    main()
 

Bu beti─čin ├Ârnek ├ž─▒kt─▒s─▒:

 thread1 party time!: __main__
thread2 party time!: __main__
proc1 party time!: __mp_main__
proc2 party time!: __mp_main__
total time to execute four 3-sec functions: 3.4519670009613037
 

├çok i┼č par├žac─▒─č─▒

Daha sonradan Timer i┼č par├žac─▒─č─▒ nesnesiyle ayr─▒ bir i┼č par├žac─▒─č─▒nda ├ža─čr─▒lacak bir i┼člevi tetikleyebilirsiniz :

 >>> from threading import Timer
>>> t = Timer(3, party_time, args=None, kwargs=None)
>>> t.start()
>>>
>>> hooray!

>>> 
 

Bo┼č sat─▒r, i┼člevin benim standart ├ž─▒kt─▒ma yazd─▒r─▒ld─▒─č─▒n─▒ ve h─▒zl─▒ca Enteristedi─čimden emin olmak i├žin vurmam gerekti─čini g├Âsteriyor.

Bu y├Ântemin tersi, Timer i┼č par├žac─▒─č─▒ beklerken, ba┼čka bir ┼čey yapmay─▒ ba┼čard─▒m, bu durumda, Enterbir kez isabet ettim - i┼člev y├╝r├╝t├╝lmeden ├Ânce (ilk bo┼č isteme bak─▒n).

├çok i┼člemli kitapl─▒kta ilgili bir nesne yok . Bir tane olu┼čturabilirsiniz, ancak b├╝y├╝k olas─▒l─▒kla bir sebep yoktur. Alt-iplik, basit bir zamanlay─▒c─▒ i├žin yepyeni bir alt-i┼člemden ├žok daha anlaml─▒.


84







Uykulu bir jenerat├Âr ile biraz e─členceli .

Soru, zaman gecikmesi ile ilgili. Sabit bir zaman olabilir, ancak baz─▒ durumlarda son zamandan beri ├Âl├ž├╝len bir gecikmeye ihtiyac─▒m─▒z olabilir. ─░┼čte size olas─▒ bir ├ž├Âz├╝m:

Son zamandan beri ├Âl├ž├╝len gecikme (d├╝zenli uyanma)

Durum d├╝zenli m├╝mk├╝n oldu─čunca bir ┼čey yapmak istiyorum ve t├╝m rahats─▒z etmek istemiyorum, olabilir last_time , next_time bizim kod ├ževresindeki t├╝m ┼čeyler.

Buzzer ├╝reteci

A┼ča─č─▒daki kod ( sleepy.py ) bir buzzergen jenerat├Âr tan─▒mlar :

 import time
from itertools import count

def buzzergen(period):
    nexttime = time.time() + period
    for i in count():
        now = time.time()
        tosleep = nexttime - now
        if tosleep > 0:
            time.sleep(tosleep)
            nexttime += period
        else:
            nexttime = now + period
        yield i, nexttime
 

D├╝zenli buzzergen ├ža─č─▒rmak

 from sleepy import buzzergen
import time
buzzer = buzzergen(3) # Planning to wake up each 3 seconds
print time.time()
buzzer.next()
print time.time()
time.sleep(2)
buzzer.next()
print time.time()
time.sleep(5) # Sleeping a bit longer than usually
buzzer.next()
print time.time()
buzzer.next()
print time.time()
 

Ve onu ├žal─▒┼čt─▒r─▒rken g├Âr├╝yoruz:

 1400102636.46
1400102639.46
1400102642.46
1400102647.47
1400102650.47
 

Do─črudan bir d├Âng├╝de de kullanabiliriz:

 import random
for ring in buzzergen(3):
    print "now", time.time()
    print "ring", ring
    time.sleep(random.choice([0, 2, 4, 6]))
 

Ve onu ├žal─▒┼čt─▒rarak g├Ârebiliriz:

 now 1400102751.46
ring (0, 1400102754.461676)
now 1400102754.46
ring (1, 1400102757.461676)
now 1400102757.46
ring (2, 1400102760.461676)
now 1400102760.46
ring (3, 1400102763.461676)
now 1400102766.47
ring (4, 1400102769.47115)
now 1400102769.47
ring (5, 1400102772.47115)
now 1400102772.47
ring (6, 1400102775.47115)
now 1400102775.47
ring (7, 1400102778.47115)
 

G├Ârd├╝─č├╝m├╝z gibi, bu zil ├žok kat─▒ de─čil ve uyuyakal ve d├╝zenli zamanlamadan ├ž─▒ksak bile d├╝zenli uykulu zaman aral─▒klar─▒n─▒ yakalamam─▒za izin veriyor.


48







Gecikmeler, a┼ča─č─▒daki y├Ântemler kullan─▒larak da ger├žekle┼čtirilebilir.

─░lk y├Ântem

 import time
time.sleep(5) # Delay for 5 seconds.
 

Geciktirmek i├žin ikinci y├Ântem, ├Ârt├╝l├╝ bekleme y├Ântemini kullanmak olacakt─▒r:

  driver.implicitly_wait(5)
 

├ť├ž├╝nc├╝ y├Ântem, belirli bir i┼člem tamamlanana veya bir ├Â─če bulunana kadar beklemeniz gerekti─činde daha kullan─▒┼čl─▒d─▒r:

 self.wait.until(EC.presence_of_element_located((By.ID, 'UserName'))
 

34







Python standart k├╝t├╝phanesindeki tkinter k├╝t├╝phanesi, i├že aktarabilece─činiz etkile┼čimli bir ara├žt─▒r. Temel olarak, d├╝─čmeler, kutular ve a├ž─▒l─▒r pencereler ve kodla de─či┼čtirdi─činiz pencereler gibi g├Âr├╝nen ├Â─čeler olu┼čturabilirsiniz.

E─čer tkinter kullan─▒yorsan─▒z, KULLANMAYINIZ, TIME.SLEEP() ├ž├╝nk├╝ program─▒n─▒za zarar verecektir. Bu bana oldu. Bunun root.after() yerine, de─čerleri bir ka├ž saniye boyunca bir milisaniye ile kullan─▒n ve de─či┼čtirin. ├ľrne─čin, tkinter i├žindeki time.sleep(1) e┼čde─čerdir root.after(1000) .

Aksi halde, time.sleep() hangi cevaplar─▒n i┼čaret etti─čini, hangi yoldan gidece─čini belirttim.


27







Gecikmeler zaman kitapl─▒─č─▒ , ├Âzellikle de time.sleep() i┼člev ile yap─▒l─▒r.

Bir saniye bekletmek i├žin:

 from time import sleep
sleep(1)
 

Bu ├žal─▒┼č─▒r ├ž├╝nk├╝ yaparak:

 from time import sleep
 

Sen ay─▒klamak uyku fonksiyonunu sadece gelen zaman k├╝t├╝phaneye sadece ile ├ža─čr─▒ anlam─▒na gelir,:

 sleep(seconds)
 

Yazmak zorunda kalmaktansa

 time.sleep()
 

Hangi yazmak i├žin beceriksizce uzun.

Bu y├Ântemle, zaman k├╝t├╝phanesinin di─čer ├Âzelliklerine eri┼čemezsiniz ve bir de─či┼čken kullanamazs─▒n─▒z sleep . Ancak ad─▒nda bir de─či┼čken olu┼čturabilirsiniz time .

from [library] import [function] (, [function2]) Bir mod├╝l├╝n sadece baz─▒ k─▒s─▒mlar─▒n─▒ istiyorsan─▒z, yapmak harika.

Bunu e┼čit ┼čekilde yapabilirsiniz:

 import time
time.sleep(1)
 

ve di─čer ├Âzelliklerine eri┼čim olurdu zaman k├╝t├╝phaneye gibi time.clock() yazd─▒─č─▒n─▒z s├╝rece kadar time.[function]() , ancak ithalat ├╝zerine yaz─▒laca─č─▒ i├žin de─či┼čken zaman olu┼čturamad─▒. Bunun i├žin bir ├ž├Âz├╝m

 import time as t
 

Bu, zaman kitapl─▒─č─▒na ┼ču ┼čekilde t ba┼čvurman─▒z─▒ sa─člar:

 t.sleep()
 

Bu herhangi bir k├╝t├╝phanede ├žal─▒┼č─▒r.


26







Orada 5 bildi─čim y├Ântemler ┼čunlard─▒r: time.sleep() , pygame.time.wait() , matplotlib en pyplot.pause() , .after() ve driver.implicitly_wait() .


time.sleep() ├ľrnek (e─čer Tkinter kullan─▒yorsan─▒z kullanmay─▒n):

 import time
print('Hello')
time.sleep(5) #number of seconds
print('Bye')
 

pygame.time.wait() ├Ârnek (pygame penceresini kullanm─▒yorsan─▒z ├Ânerilmez, ancak pencereden an─▒nda ├ž─▒kabilirsiniz):

 import pygame
#If you are going to use the time module
#don't do "from pygame import *"
pygame.init()
print('Hello')
pygame.time.wait(5000)#milliseconds
print('Bye')
 

matplotlib i┼člev pyplot.pause() ├Ârne─či (grafi─či kullanm─▒yorsan─▒z ├Ânerilmez, ancak grafikten hemen ├ž─▒kabilirsiniz):

 import matplotlib
print('Hello')
matplotlib.pyplot.pause(5)#seconds 
print('Bye')
 

.after() (En iyi Tkinter ile) y├Ântemi:

 import tkinter as tk #Tkinter for python 2
root = tk.Tk()
print('Hello')
def ohhi():
 print('Oh, hi!')
root.after(5000, ohhi)#milliseconds and then a function
print('Bye')
 

Son olarak, driver.implicitly_wait() y├Ântem (selenyum):

 driver.implicitly_wait(5)#waits 5 seconds
 

25







asyncio.sleep

Uyar─▒ son python s├╝r├╝mlerinde (python 3.4 veya ├╝st├╝) kullanabilirsiniz asyncio.sleep . Asenkron programlama ve asyncio ile ilgili. Bir sonraki ├Ârne─če g├Âz at─▒n:

 import asyncio
from datetime import datetime

@asyncio.coroutine
def countdown(iteration_name, countdown_sec):
    """
    Just count for some countdown_sec seconds and do nothing else
    """
    while countdown_sec > 0:
       print(f'{iteration_name} iterates: {countdown_sec} seconds')
       yield from asyncio.sleep(1)
       countdown_sec -= 1

loop = asyncio.get_event_loop()
tasks = [asyncio.ensure_future(countdown('First Count', 2)),
         asyncio.ensure_future(countdown('Second Count', 3))]

start_time = datetime.utcnow() 

# run both methods. How much time will both run...?
loop.run_until_complete(asyncio.wait(tasks))

loop.close()

print(f'total running time: {datetime.utcnow() - start_time}')
 

─░lk y├Ântem i├žin 2 saniye, daha sonra ikinci y├Ântemde 3 saniye "uyku" olaca─č─▒n─▒ d├╝┼č├╝nebiliriz, bu kodun toplam ├žal─▒┼čma s├╝resi 5 saniyedir. Ancak yazd─▒racak:

 total_running_time: 0:00:03.01286
 

Daha fazla ayr─▒nt─▒ i├žin asyncio'nun resmi belgelerini okuman─▒z─▒ ├Âneririz


9







Python beti─činde zaman gecikmesi koymak istiyorsan─▒z:

Kullan─▒n time.sleep veya Event().wait ┼čunun gibi:

 from threading import Event
from time import sleep

delay_in_sec = 2

# use time.sleep like this
sleep(delay_in_sec)         # returns None
print(f'slept for {delay_in_sec} seconds')

# or use Event().wait like this
Event().wait(delay_in_sec)  # returns False
print(f'waited for {delay_in_sec} seconds')       
 

Ancak, bir i┼člevin y├╝r├╝t├╝lmesini geciktirmek istiyorsan─▒z, bunu yap─▒n:

Bunun threading.Timer gibi kullan─▒n :

 from threading import Timer 

delay_in_sec = 2

def hello(delay_in_sec):
    print(f'function called after {delay_in_sec} seconds')

t = Timer(delay_in_sec, hello, [delay_in_sec])  # hello function will be called 2 sec later with [delay_in_sec] as *args parameter
t.start()  # returns None
print("Started")
 

Çıktılar:

 Started
function called after 2 seconds         
 

Neden daha sonraki yakla┼č─▒m─▒ kullanmal─▒?

  • Mu de─čil t├╝m senaryonun y├╝r├╝t├╝lmesini durdurur. (aktard─▒─č─▒n─▒z i┼člev hari├ž)
  • Zamanlay─▒c─▒y─▒ ba┼člatt─▒ktan sonra da yaparak durdurabilirsiniz timer_obj.cancel() .

7







Herkes fiilen ├Ânerdi olsa da time mod├╝l, ben kullanarak farkl─▒ bir y├Ântem payla┼čmak istedim matplotlib '─▒n pyplot , i┼člevi pause .

Bir ├Ârnek

 from matplotlib import pyplot as plt
plt.pause(5)    # Pauses the program for 5 seconds
 

Tipik olarak bu, komplo ├žizildi─či anda kaybolmas─▒n─▒ ├Ânlemek veya kaba animasyonlar yapmak i├žin kullan─▒l─▒r.

import Zaten matplotlib i├že aktard─▒ysan─▒z , bu size bir tasarruf sa─člar .


6







Bu, gecikme s├╝resi i├žin kolay bir ├Ârnektir:

 import time

def delay(period='5'):
    # If the user enters nothing, It'll wait 5 seconds
    try:
        #If the user not enters a int, I'll just return ''
        time.sleep(period)
    except:
        return ''
 

Tkinter'da bir tane daha:

 import tkinter

def tick():
    pass

root=Tk()
delay=100 # time in milliseconds
root.after(delay,tick)
root.mainloop()
 

6



─░lgili yay─▒nlar


Notland─▒rma nedir ve Python'da nas─▒l kullanabilirim?

Java'da nas─▒l gecikme yapabilirim?

Python'da ÔÇťraiseÔÇŁ anahtar s├Âzc├╝─č├╝ nas─▒l kullan─▒l─▒r [duplicate]

Python'da IP adresi nas─▒l do─črulan─▒r? [├žift]

Javascript'te zaman gecikmesi nas─▒l ayarlan─▒r

python [duplicate] i├žinde ekran nas─▒l temizlenir

Python'da listeler nas─▒l ayr─▒ bir ├Â─če i├žerir? [├žift]

Python'da dairesel ithalattan nas─▒l ka├ž─▒n─▒l─▒r? [├žift]

Python'da program ├žal─▒┼čma zaman─▒n─▒ nas─▒l hesaplars─▒n─▒z? [├žift]

String i├žinde enterpolasyon nas─▒l yap─▒l─▒r? [├žift]

Etiketle ilgili di─čer sorular [python]


Git ┼čubesini ustal─▒kla birle┼čtirmek i├žin en iyi (ve en g├╝venli) yol nedir?

Bir dize ge├žerli bir say─▒ olup olmad─▒─č─▒n─▒ kontrol etmek i├žin JavaScript (Dahili) yolu

Eclipse'deki Android Emulator'den http: // localhost web sunucusuna nas─▒l ba─član─▒l─▒r

Json.net ile seri hale getirirken ├Âzellik adlar─▒n─▒ nas─▒l de─či┼čtirebilirim?

Neden bir yap─▒y─▒ C de bu kadar s─▒k ÔÇőÔÇőyazmal─▒y─▒z?

Hat─▒rlat─▒c─▒ - \ r \ n veya \ n \ r?

Besteci kullanarak Laravel'den bir paket nas─▒l ├ž─▒kar─▒l─▒r?

FileSystemWatcher Changed olay─▒ iki kez b├╝y├╝t├╝ld├╝

SQL Server - bir SQL beti─činin ├žal─▒┼čmas─▒n─▒ durdurur veya durdurur

H─▒zl─▒ 'let` ve `var` aras─▒ndaki fark nedir?