Bagaimana saya bisa membuat waktu keterlambatan dalam Python?
Saya ingin tahu bagaimana untuk menempatkan waktu keterlambatan dalam sebuah script Python.
2622
12
Saya ingin tahu bagaimana untuk menempatkan waktu keterlambatan dalam sebuah script Python.
Berikut adalah contoh lain di mana ada sesuatu yang berjalan sekitar satu menit sekali:
Anda dapat menggunakan
tidur()
di dalamwaktu
module. Hal ini dapat mengambil pelampung argumen untuk sub-resolusi kedua.Di satu thread saya sarankan fungsi tidur:
Fungsi ini benar-benar menunda pengolahan benang yang disebut oleh sistem operasi, yang memungkinkan benang lain dan proses untuk mengeksekusi ketika tidur.
Menggunakannya untuk tujuan itu, atau hanya untuk menunda fungsi dari pelaksana. Misalnya:
"hore!" dicetak 3 detik setelah aku memukul Enter.
Contoh dengan menggunakan
tidur
dengan beberapa benang dan prosesLagi,
tidur
menunda thread anda - menggunakan sebelah nol kekuatan pemrosesan.Untuk menunjukkan, membuat script seperti ini (saya pertama kali mencoba hal ini dalam sebuah interaktif Python shell 3.5, tapi sub-proses dapat't menemukan
party_later
fungsi untuk beberapa alasan):Contoh output dari script ini:
Multithreading
Anda dapat memicu fungsi yang akan dipanggil nanti di thread terpisah dengan
Timer
threading obyek:Baris kosong menggambarkan bahwa fungsi dicetak untuk standar saya keluar dan saya harus memukul Enter untuk memastikan saya berada di sebuah prompt.
Keuntungan dari metode ini adalah bahwa sementara
Timer
benang menunggu, saya mampu melakukan hal-hal lain, dalam hal ini, memukul Enter satu waktu - sebelum fungsi dijalankan (lihat pertama kosong prompt).Ada isn't masing-masing objek di multiprocessing perpustakaan. Anda bisa membuat satu, tapi itu tidak mungkin't ada untuk sebuah alasan. Sub-thread membuat banyak lebih masuk akal untuk sebuah timer sederhana dari keseluruhan sub-proses.
Sedikit bersenang-senang dengan mengantuk generator.
Pertanyaannya adalah tentang waktu tunda. Hal ini dapat menjadi waktu yang tetap, tetapi dalam beberapa kasus kita mungkin perlu menunda diukur sejak terakhir kali. Berikut ini adalah salah satu solusi yang mungkin:
Delay diukur sejak terakhir kali (bangun secara teratur)
Situasi dapat, kita ingin melakukan sesuatu secara teratur mungkin dan kami tidak ingin repot-repot dengan semua
last_time
,next_time
hal-hal di sekitar kita kode.Buzzer generator
Kode berikut (sleepy.py) mendefinisikan
buzzergen
generator:Memohon biasa buzzergen
Dan berjalan ini kita melihat:
Kita juga dapat menggunakannya secara langsung dalam loop:
Dan berjalan itu kita bisa melihat:
Seperti yang kita lihat, ini buzzer tidak terlalu kaku dan memungkinkan kita untuk mengejar ketinggalan dengan teratur mengantuk interval bahkan jika kita kesiangan dan keluar dari jadwal rutin.
Keterlambatan dapat juga dilaksanakan dengan menggunakan metode berikut.
Metode pertama
Metode kedua untuk menunda akan menggunakan implisit menunggu metode:
Metode ketiga adalah lebih berguna ketika anda harus menunggu sampai tindakan tertentu selesai atau sampai elemen ditemukan:
Dengan tkinter perpustakaan di Python library standar adalah alat interaktif yang dapat anda impor. Pada dasarnya, anda dapat membuat tombol dan kotak dan popup dan hal-hal yang muncul sebagai windows yang anda memanipulasi dengan kode.
Jika anda menggunakan tkinter, TIDAK MENGGUNAKAN
WAKTU.TIDUR()
karena itu akan muck up program anda. Hal ini terjadi pada saya. Sebaliknya, gunakanakar.setelah()
dan mengganti nilai namun beberapa detik, dengan milidetik. E. g,waktu.tidur(1)
setara denganakar.setelah(1000)
di tkinter.Sebaliknya,
waktu.tidur()
, yang banyak jawaban telah menunjukkan, yang adalah cara untuk pergi.Ada 5 metode yang saya tahu:
waktu.tidur()
,pygame.waktu.menunggu()
, matplotlib'spyplot.pause()
,.setelah()
, dansopir.implicitly_wait()
.waktu.tidur()
contoh (jangan gunakan jika menggunakan Tkinter):pygame.waktu.menunggu()
misalnya (tidak dianjurkan jika anda tidak menggunakan pygame jendela, tapi anda bisa keluar jendela langsung):matplotlib's fungsi
pyplot.pause()
misalnya (tidak dianjurkan jika anda tidak menggunakan grafik, tapi anda bisa keluar grafik langsung):The
.setelah()
metode (terbaik dengan Tkinter):Akhirnya,
sopir.implicitly_wait()
metode (selenium):Penundaan dilakukan dengan android, khususnya
waktu.tidur()
fungsi.Hanya membuatnya menunggu kedua:
Ini bekerja karena dengan melakukan:
Anda mengekstrak fungsi tidur hanya dari android, yang berarti anda hanya bisa menyebutnya dengan:
Daripada harus mengetikkan
Yang canggung lama untuk mengetik.
Dengan metode ini, anda tidak't mendapatkan akses ke fitur-fitur lainnya dari android dan anda dapat't memiliki sebuah variabel yang disebut
tidur
. Tapi anda bisa membuat sebuah variabel yang disebutwaktu
.Melakukan
dari [perpustakaan] impor [fungsi] (, [function2])
adalah besar jika anda hanya ingin bagian-bagian tertentu dari sebuah modul.Anda bisa sama-sama melakukannya sebagai:
dan anda akan memiliki akses ke fitur-fitur lainnya dari android seperti
waktu.jam()
selama anda ketikwaktu.[fungsi]()
, tapi anda tidak't membuat variabel waktu karena hal itu akan menimpa impor. Solusi untuk ini untuk melakukanyang akan memungkinkan anda untuk referensi android sebagai
t
, yang memungkinkan anda untuk melakukan:Ini bekerja pada setiap perpustakaan.
asyncio.tidur
Pemberitahuan dalam beberapa versi python (python 3.4 atau lebih tinggi) anda dapat menggunakan
asyncio.tidur
. It's yang terkait dengan pemrograman asynchronous dan asyncio. Check out contoh berikutnya:Kita mungkin berpikir itu akan "tidur" selama 2 detik untuk metode pertama dan kemudian 3 detik dalam metode kedua, total 5 detik waktu berjalan dari kode ini. Tapi itu akan mencetak:
Sarankan untuk membaca asyncio dokumentasi resmi untuk lebih jelasnya
Jika anda ingin menempatkan waktu keterlambatan dalam Python script:
Menggunakan
waktu.tidur
atauEvent().menunggu
seperti ini:Namun, jika anda ingin menunda eksekusi dari fungsi yang melakukan hal ini:
Gunakan
threading.Timer
seperti ini:Output:
Mengapa menggunakan kemudian pendekatan?
timer_obj.batal()
.Ini adalah contoh mudah dari waktu tunda:
Lain, di Tkinter:
Sementara orang lain telah menyarankan de facto
waktu
modul, saya pikir saya'd berbagi metode yang berbeda menggunakanmatplotlib
'spyplot
fungsi,pause
.Contoh
Biasanya ini digunakan untuk mencegah plot dari menghilang secepat itu diplot atau untuk membuat minyak mentah animasi.
Ini akan menyelamatkan anda sebuah
impor
jika anda sudah memilikimatplotlib
diimpor.