Hướng dẫn time delay python - trăn trễ thời gian

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Sử dụng Sleep [] để mã hóa Bot thời gian hoạt động Python This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Using sleep[] to Code a Python Uptime Bot

Bạn đã bao giờ cần phải làm cho chương trình Python của bạn chờ đợi một cái gì đó? Hầu hết thời gian, bạn muốn mã của mình thực thi càng nhanh càng tốt. Nhưng có những lúc để mã của bạn ngủ trong một thời gian thực sự là lợi ích tốt nhất của bạn.

Ví dụ: bạn có thể sử dụng cuộc gọi Python

$ python3 -m timeit -n 3 "import time; time.sleep[3]"
3 loops, best of 5: 3 sec per loop
5 để mô phỏng độ trễ trong chương trình của bạn. Có lẽ bạn cần chờ một tệp để tải lên hoặc tải xuống hoặc cho một đồ họa tải hoặc được vẽ vào màn hình. Bạn thậm chí có thể cần phải tạm dừng giữa các cuộc gọi đến API Web hoặc giữa các truy vấn vào cơ sở dữ liệu. Thêm các cuộc gọi Python
$ python3 -m timeit -n 3 "import time; time.sleep[3]"
3 loops, best of 5: 3 sec per loop
5 vào chương trình của bạn có thể giúp đỡ trong từng trường hợp này và nhiều hơn nữa!
$ python3 -m timeit -n 3 "import time; time.sleep[3]"
3 loops, best of 5: 3 sec per loop
5
calls to your program can help in each of these cases, and many more!

Trong hướng dẫn này, bạn sẽ học cách thêm các cuộc gọi Python

$ python3 -m timeit -n 3 "import time; time.sleep[3]"
3 loops, best of 5: 3 sec per loop
5 với:

  • $ python3 -m timeit -n 3 "import time; time.sleep[3]"
    3 loops, best of 5: 3 sec per loop
    
    8
  • Trang trí
  • Chủ đề
  • Async io
  • Giao diện người dùng đồ họa

Bài viết này dành cho các nhà phát triển trung gian, những người đang tìm cách phát triển kiến ​​thức về Python. Nếu điều đó nghe có vẻ như bạn, thì hãy để bắt đầu!

Thêm cuộc gọi Python
$ python3 -m timeit -n 3 "import time; time.sleep[3]"
3 loops, best of 5: 3 sec per loop
5 với
$ python3 -m timeit -n 3 "import time; time.sleep[3]"
3 loops, best of 5: 3 sec per loop
8

Python đã hỗ trợ tích hợp để đưa chương trình của bạn vào giấc ngủ. Mô -đun

import time
import urllib.request
import urllib.error

def uptime_bot[url]:
    while True:
        try:
            conn = urllib.request.urlopen[url]
        except urllib.error.HTTPError as e:
            # Email admin / log
            print[f'HTTPError: {e.code} for {url}']
        except urllib.error.URLError as e:
            # Email admin / log
            print[f'URLError: {e.code} for {url}']
        else:
            # Website is up
            print[f'{url} is up']
        time.sleep[60]

if __name__ == '__main__':
    url = '//www.google.com/py'
    uptime_bot[url]
1 có chức năng
$ python3 -m timeit -n 3 "import time; time.sleep[3]"
3 loops, best of 5: 3 sec per loop
5 mà bạn có thể sử dụng để đình chỉ thực thi luồng gọi trong nhiều giây bạn chỉ định.

Ở đây, một ví dụ về cách sử dụng

$ python3 -m timeit -n 3 "import time; time.sleep[3]"
3 loops, best of 5: 3 sec per loop
8:

>>>

>>> import time
>>> time.sleep[3] # Sleep for 3 seconds

Nếu bạn chạy mã này trong bảng điều khiển của mình, thì bạn nên trải nghiệm độ trễ trước khi bạn có thể nhập một câu lệnh mới trong bản phát hành.

Bạn có thể kiểm tra thời gian ngủ kéo dài bằng cách sử dụng mô -đun Python từ ____24:

$ python3 -m timeit -n 3 "import time; time.sleep[3]"
3 loops, best of 5: 3 sec per loop

Tại đây, bạn chạy mô -đun

import time
import urllib.request
import urllib.error

def uptime_bot[url]:
    while True:
        try:
            conn = urllib.request.urlopen[url]
        except urllib.error.HTTPError as e:
            # Email admin / log
            print[f'HTTPError: {e.code} for {url}']
        except urllib.error.URLError as e:
            # Email admin / log
            print[f'URLError: {e.code} for {url}']
        else:
            # Website is up
            print[f'{url} is up']
        time.sleep[60]

if __name__ == '__main__':
    url = '//www.google.com/py'
    uptime_bot[url]
4 với tham số
import time
import urllib.request
import urllib.error

def uptime_bot[url]:
    while True:
        try:
            conn = urllib.request.urlopen[url]
        except urllib.error.HTTPError as e:
            # Email admin / log
            print[f'HTTPError: {e.code} for {url}']
        except urllib.error.URLError as e:
            # Email admin / log
            print[f'URLError: {e.code} for {url}']
        else:
            # Website is up
            print[f'{url} is up']
        time.sleep[60]

if __name__ == '__main__':
    url = '//www.google.com/py'
    uptime_bot[url]
6, cho biết
import time
import urllib.request
import urllib.error

def uptime_bot[url]:
    while True:
        try:
            conn = urllib.request.urlopen[url]
        except urllib.error.HTTPError as e:
            # Email admin / log
            print[f'HTTPError: {e.code} for {url}']
        except urllib.error.URLError as e:
            # Email admin / log
            print[f'URLError: {e.code} for {url}']
        else:
            # Website is up
            print[f'{url} is up']
        time.sleep[60]

if __name__ == '__main__':
    url = '//www.google.com/py'
    uptime_bot[url]
4 đã bao nhiêu lần để chạy câu lệnh sau đó. Bạn có thể thấy rằng
import time
import urllib.request
import urllib.error

def uptime_bot[url]:
    while True:
        try:
            conn = urllib.request.urlopen[url]
        except urllib.error.HTTPError as e:
            # Email admin / log
            print[f'HTTPError: {e.code} for {url}']
        except urllib.error.URLError as e:
            # Email admin / log
            print[f'URLError: {e.code} for {url}']
        else:
            # Website is up
            print[f'{url} is up']
        time.sleep[60]

if __name__ == '__main__':
    url = '//www.google.com/py'
    uptime_bot[url]
4 đã chạy tuyên bố 3 lần và thời gian chạy tốt nhất là 3 giây, đó là những gì được mong đợi.

Số lần mặc định mà

import time
import urllib.request
import urllib.error

def uptime_bot[url]:
    while True:
        try:
            conn = urllib.request.urlopen[url]
        except urllib.error.HTTPError as e:
            # Email admin / log
            print[f'HTTPError: {e.code} for {url}']
        except urllib.error.URLError as e:
            # Email admin / log
            print[f'URLError: {e.code} for {url}']
        else:
            # Website is up
            print[f'{url} is up']
        time.sleep[60]

if __name__ == '__main__':
    url = '//www.google.com/py'
    uptime_bot[url]
4 sẽ chạy mã của bạn là một triệu. Nếu bạn đã chạy mã trên với
import time
import urllib.request
import urllib.error

def uptime_bot[url]:
    while True:
        try:
            conn = urllib.request.urlopen[url]
        except urllib.error.HTTPError as e:
            # Email admin / log
            print[f'HTTPError: {e.code} for {url}']
        except urllib.error.URLError as e:
            # Email admin / log
            print[f'URLError: {e.code} for {url}']
        else:
            # Website is up
            print[f'{url} is up']
        time.sleep[60]

if __name__ == '__main__':
    url = '//www.google.com/py'
    uptime_bot[url]
6 mặc định, thì ở mức 3 giây cho mỗi lần lặp, thiết bị đầu cuối của bạn sẽ bị treo trong khoảng 34 ngày! Mô -đun
import time
import urllib.request
import urllib.error

def uptime_bot[url]:
    while True:
        try:
            conn = urllib.request.urlopen[url]
        except urllib.error.HTTPError as e:
            # Email admin / log
            print[f'HTTPError: {e.code} for {url}']
        except urllib.error.URLError as e:
            # Email admin / log
            print[f'URLError: {e.code} for {url}']
        else:
            # Website is up
            print[f'{url} is up']
        time.sleep[60]

if __name__ == '__main__':
    url = '//www.google.com/py'
    uptime_bot[url]
4 có một số tùy chọn dòng lệnh khác mà bạn có thể xem trong tài liệu của nó.

Hãy để tạo ra một cái gì đó thực tế hơn một chút. Một quản trị viên hệ thống cần biết khi nào một trong những trang web của họ đi xuống. Bạn muốn có thể kiểm tra mã trạng thái của trang web thường xuyên, nhưng bạn có thể truy vấn máy chủ web liên tục hoặc nó sẽ ảnh hưởng đến hiệu suất. Một cách để thực hiện kiểm tra này là sử dụng cuộc gọi hệ thống Python

$ python3 -m timeit -n 3 "import time; time.sleep[3]"
3 loops, best of 5: 3 sec per loop
5:

import time
import urllib.request
import urllib.error

def uptime_bot[url]:
    while True:
        try:
            conn = urllib.request.urlopen[url]
        except urllib.error.HTTPError as e:
            # Email admin / log
            print[f'HTTPError: {e.code} for {url}']
        except urllib.error.URLError as e:
            # Email admin / log
            print[f'URLError: {e.code} for {url}']
        else:
            # Website is up
            print[f'{url} is up']
        time.sleep[60]

if __name__ == '__main__':
    url = '//www.google.com/py'
    uptime_bot[url]

Ở đây bạn tạo

HTTPError: 404 for //www.google.com/py
3, lấy một URL làm đối số của nó. Hàm sau đó cố gắng mở URL đó bằng
HTTPError: 404 for //www.google.com/py
4. Nếu có một
HTTPError: 404 for //www.google.com/py
5 hoặc
HTTPError: 404 for //www.google.com/py
6, thì chương trình sẽ bắt nó và in lỗi. [Trong một môi trường trực tiếp, bạn sẽ đăng nhập lỗi và có thể gửi email cho quản trị viên web hoặc quản trị viên hệ thống.]

Nếu không có lỗi xảy ra, thì mã của bạn sẽ in ra rằng tất cả đều tốt. Bất kể điều gì xảy ra, chương trình của bạn sẽ ngủ trong 60 giây. Điều này có nghĩa là bạn chỉ truy cập trang web một lần mỗi phút. URL được sử dụng trong ví dụ này là xấu, do đó, nó sẽ xuất những thứ sau vào bảng điều khiển của bạn một lần mỗi phút:

HTTPError: 404 for //www.google.com/py

Hãy tiếp tục và cập nhật mã để sử dụng URL tốt đã biết, như

HTTPError: 404 for //www.google.com/py
7. Sau đó, bạn có thể chạy lại nó để thấy nó hoạt động thành công. Bạn cũng có thể cố gắng cập nhật mã để gửi email hoặc đăng nhập các lỗi. Để biết thêm thông tin về cách thực hiện việc này, hãy xem gửi email với Python và đăng nhập vào Python.

Thêm một cuộc gọi Python
$ python3 -m timeit -n 3 "import time; time.sleep[3]"
3 loops, best of 5: 3 sec per loop
5 với các nhà trang trí

Có những lúc bạn cần thử lại một chức năng đã thất bại. Một trường hợp sử dụng phổ biến cho điều này là khi bạn cần thử lại tải xuống tệp vì máy chủ đang bận. Bạn thường giành chiến thắng muốn đưa ra yêu cầu đến máy chủ quá thường xuyên, vì vậy việc thêm cuộc gọi Python

$ python3 -m timeit -n 3 "import time; time.sleep[3]"
3 loops, best of 5: 3 sec per loop
5 giữa mỗi yêu cầu là mong muốn.

Một trường hợp sử dụng khác mà cá nhân tôi đã trải nghiệm là nơi tôi cần kiểm tra trạng thái của giao diện người dùng trong quá trình kiểm tra tự động. Giao diện người dùng có thể tải nhanh hoặc chậm hơn bình thường, tùy thuộc vào máy tính mà tôi đang chạy thử nghiệm. Điều này có thể thay đổi những gì trên màn hình tại thời điểm hiện tại chương trình của tôi đang xác minh một cái gì đó.

Trong trường hợp này, tôi có thể bảo chương trình ngủ một lúc và sau đó kiểm tra lại mọi thứ một hoặc hai sau. Điều này có thể có nghĩa là sự khác biệt giữa một bài kiểm tra vượt qua và thất bại.

Bạn có thể sử dụng một trình trang trí để thêm một cuộc gọi hệ thống Python

$ python3 -m timeit -n 3 "import time; time.sleep[3]"
3 loops, best of 5: 3 sec per loop
5 trong một trong những trường hợp này. Nếu bạn không quen thuộc với các nhà trang trí, hoặc nếu bạn muốn đánh vào chúng, thì hãy xem Primer trên các trang trí Python. Hãy nhìn vào một ví dụ:decorator to add a Python
$ python3 -m timeit -n 3 "import time; time.sleep[3]"
3 loops, best of 5: 3 sec per loop
5 system call in either of these cases. If you’re not familiar with decorators, or if you’d like to brush up on them, then check out Primer on Python Decorators. Let’s look at an example:

import time
import urllib.request
import urllib.error

def sleep[timeout, retry=3]:
    def the_real_decorator[function]:
        def wrapper[*args, **kwargs]:
            retries = 0
            while retries 

Bài Viết Liên Quan

Chủ Đề