Đơn vị thời gian trong Python

Mã thiết lập là một phần của mã cần thiết để bạn chạy mã chính thực hiện tất cả công việc tính toán

Hãy nghĩ về tất cả các thư viện bạn đang nhập và các biến bạn đang khai báo. Nhiều dòng mã này đủ điều kiện là mã thiết lập

 #Step 2 
 setup_code = """
 name = "Pylenin"
 result_list = []
 """
  • Bước 3 - Viết mã chính của bạn

    Mã chính về cơ bản là đoạn mã mà bạn muốn đo thời gian thực hiện

    Trong trường hợp này, chúng tôi muốn so sánh thời gian thực hiện của vòng lặp for với khả năng hiểu danh sách. Những đoạn mã đó sẽ đi vào mã chính

    #Step 3
    main_code = """
    for char in name:
        result_list.append(char)
    """
    
  • Bước 4 - Gọi hàm timeit

    Với cả hai câu lệnh main_code và setup_code đã được xác định, bạn có thể chuyển chúng dưới dạng tham số vào hàm timeit

    Tham số

    name = "Pylenin" 
    result_list = [char for char in name] 
    
    #Result 
    >>> ['P', 'y', 'l', 'e', 'n', 'i', 'n']
    5 nhận trong câu lệnh
    name = "Pylenin" 
    result_list = [char for char in name] 
    
    #Result 
    >>> ['P', 'y', 'l', 'e', 'n', 'i', 'n']
    6. Tham số
    name = "Pylenin" 
    result_list = [char for char in name] 
    
    #Result 
    >>> ['P', 'y', 'l', 'e', 'n', 'i', 'n']
    7 nhận trong câu lệnh
    name = "Pylenin" 
    result_list = [char for char in name] 
    
    #Result 
    >>> ['P', 'y', 'l', 'e', 'n', 'i', 'n']
    8. Tham số
    name = "Pylenin" 
    result_list = [char for char in name] 
    
    #Result 
    >>> ['P', 'y', 'l', 'e', 'n', 'i', 'n']
    9 lấy số lần thực hiện (theo mặc định là 1 triệu). Bạn có thể chuyển nhiều dòng mã như một phần của
    name = "Pylenin" 
    result_list = [char for char in name] 
    
    #Result 
    >>> ['P', 'y', 'l', 'e', 'n', 'i', 'n']
    6 và
    name = "Pylenin" 
    result_list = [char for char in name] 
    
    #Result 
    >>> ['P', 'y', 'l', 'e', 'n', 'i', 'n']
    8 trong hàm timeit của mình

    #Step 4
    print(timeit.timeit(stmt=main_code,
              setup=setup_code,
              number=10000))
    

    Thời gian thực thi của mã thiết lập bị loại trừ khỏi kết quả


  • Nhìn chung, đây là mã của bạn sẽ trông như thế nào

    # Python timeit Example
    import timeit
    
    setup_code = """
    name = "Pylenin"
    result_list = []
    """
    
    main_code = """
    for char in name:
        result_list.append(char)
    """
    
    print(timeit.timeit(stmt=main_code,
                        setup=setup_code,
                        number=10000))
    
    #Result
    >>> 0.00629170099273324

    Đầu ra của chương trình trên là thời gian thực hiện (tính bằng giây) cho 10000 lần thực hiện. Để có thời gian cho mỗi lần thực hiện, hãy chia kết quả cho số lần thực hiện

    Hãy so sánh thời gian thực hiện của vòng lặp for với khả năng hiểu danh sách

    import timeit
    
    setup_code_1 ="""
    name = "Pylenin"
    result_list = []
    """
    
    main_code_1 ="""
    for char in name:
        result_list.append(char)
    """
    
    t1 = timeit.timeit(stmt=main_code_1,
                        setup=setup_code_1,
                        number=10000)
    
    setup_code_2 ="""
    name = "Pylenin"
    """
    
    main_code_2 ="""
    result_list = [char for char in name] 
    """
    
    t2 = timeit.timeit(stmt=main_code_2,
                        setup=setup_code_2,
                        number=10000)
    
    print(f"10000 runs of For Loop is {t1}")
    >>> 10000 runs of For Loop is 0.005563209997490048
    
    print(f"10000 runs of List Comprehension is {t2}")
    >>> 10000 runs of List Comprehension is 0.0036344139953143895

    Rõ ràng từ kết quả là việc hiểu danh sách hiệu quả hơn nhiều so với việc sử dụng vòng lặp for đơn giản

    Bạn sử dụng mô-đun timeit để đánh giá các phương thức khác nhau trong Python và tìm ra cách nhanh nhất

    Bạn cũng có thể lặp lại các cuộc gọi của mình đến hàm

    import timeit
    
    2

    Giả sử bạn không chắc chắn về kết quả do timeit cung cấp. Bạn có thể chuyển một tham số bổ sung có tên là

    import timeit
    
    3 vào hàm
    import timeit
    
    4

    Phương pháp

    import timeit
    
    4 tương tự như phương pháp
    import timeit
    
    6, ngoại trừ, nó chấp nhận một tham số bổ sung
    import timeit
    
    3 cho biết số lần phép đo điểm chuẩn phải được thực hiện

    import timeit
    
    setup_code = """
    name = "Pylenin"
    result_list = []
    """
    
    main_code = """
    for char in name:
        result_list.append(char)
    """
    
    print(timeit.repeat(stmt=main_code,
                        setup=setup_code,
                        number=10000,
                        repeat=3))
    
    #Result
    >>> [0.005725524999434128, 0.00546123698586598, 0.005446395982289687]

    Điều này trả về cho bạn tất cả thời gian thực hiện gọi hàm

    import timeit
    
    2. Nhưng cái nào trong 3 kết quả là đúng?

    Gợi ý rằng mức tối thiểu của danh sách kết quả là điều bạn nên tính đến. Các giá trị cao hơn có thể là nhiễu ảnh hưởng đến độ chính xác về thời gian của bạn


    Sử dụng timeit với các hàm Python (có đối số)

    Bạn cũng có thể sử dụng mô-đun timeit với các chức năng

    Hãy để chúng tôi thực hiện thí nghiệm đánh dấu băng ghế trên theo một cách khác. Chúng tôi sẽ viết các hàm cho từng cách tiếp cận

    import timeit
    
    def for_loop(seq, result_list=[]):
        for char in seq:
            result_list.append(char)
        return result_list
    
    def list_comprehension(seq):
        return [char for char in seq]
    
    print(timeit.timeit(stmt = "for_loop(seq)",
                        setup="seq='Pylenin'",
                        number=10000))
    
    print(timeit.timeit(stmt = "list_comprehension(seq)",
                        setup="seq='Pylenin'",
                        number=10000))

    Khi bạn chạy đoạn mã trên, nó sẽ gửi cho bạn một NameError

    name = "Pylenin" 
    result_list = [char for char in name] 
    
    #Result 
    >>> ['P', 'y', 'l', 'e', 'n', 'i', 'n']
    0

    Bây giờ, tại sao vậy?

    Điều này là do với mô-đun timeit, mã của bạn chạy trong một không gian tên khác. Vì vậy, nó không nhận ra các chức năng bạn đã xác định trong không gian tên chung của mình. Để timeit nhận ra chức năng của bạn, bạn cần nhập nó vào cùng một không gian tên. Bạn có thể đạt được điều này bằng cách chuyển

    import timeit
    
    9 đến đối số thiết lập

    name = "Pylenin" 
    result_list = [char for char in name] 
    
    #Result 
    >>> ['P', 'y', 'l', 'e', 'n', 'i', 'n']
    1

    Bây giờ mã của bạn sẽ hoạt động bình thường và trả về thời gian thực hiện (tính bằng giây) cho 10000 lần chạy của mỗi chức năng

    Tuy nhiên, cách trên có vẻ đầy đủ. Nếu bạn không muốn điều đó, bạn có thể chuyển hàm dựng sẵn

     #Step 2 
     setup_code = """
     name = "Pylenin"
     result_list = []
     """
    
    0 vào tham số
     #Step 2 
     setup_code = """
     name = "Pylenin"
     result_list = []
     """
    
    1 trong lớp timeit

    name = "Pylenin" 
    result_list = [char for char in name] 
    
    #Result 
    >>> ['P', 'y', 'l', 'e', 'n', 'i', 'n']
    2

    Bằng cách này, bạn không phải viết câu lệnh nhập khổng lồ đó mỗi lần


    Sử dụng timeit trên dòng lệnh trong Python

    Bây giờ các ví dụ trên phù hợp để đo thời gian thực thi của nhiều dòng mã với timeit. Nếu bạn muốn kiểm tra các đoạn mã rất nhỏ, một dòng, bạn cũng có thể thực hiện điều đó từ dòng lệnh

    name = "Pylenin" 
    result_list = [char for char in name] 
    
    #Result 
    >>> ['P', 'y', 'l', 'e', 'n', 'i', 'n']
    3

    Bây giờ ví dụ trên dựa trên giả định rằng hệ thống của bạn có cả Python 2 và Python 3. Nếu bạn chỉ có một phiên bản Python, bạn có thể sử dụng

     #Step 2 
     setup_code = """
     name = "Pylenin"
     result_list = []
     """
    
    2 trong dòng lệnh của mình

    Bạn cũng có thể thêm nhiều đối số dòng lệnh ở trên

    -r, –lặp lại

    Bao nhiêu lần để lặp lại?

    -n, –số

    Bao nhiêu lần để thực hiện tuyên bố?

    -s, –thiết lập

    Mã thiết lập để thực thi câu lệnh chính

    -u, –đơn vị

    Đơn vị thời gian cho đầu ra hẹn giờ. Nó có thể là nsec, usec, msec hoặc sec

    Dưới đây là một ví dụ sử dụng các đối số trên

    name = "Pylenin" 
    result_list = [char for char in name] 
    
    #Result 
    >>> ['P', 'y', 'l', 'e', 'n', 'i', 'n']
    4

    Vì vậy, trên đây là tổng quan chi tiết về mô-đun timeit trong Python. Nếu bạn có một số ví dụ tốt hơn để chia sẻ, hãy chia sẻ với tôi trên Twitter

    Đơn vị nào là Timeit trong Python?

    Giá trị trả về là giây dưới dạng float. Đó là tổng thời gian cần thiết để chạy thử nghiệm (không tính thiết lập), do đó, thời gian trung bình cho mỗi thử nghiệm là con số đó chia cho đối số số, mặc định là 1 triệu.

    Python Timeit có tính bằng giây không?

    Hàm timeit() trả về số giây cần thiết để thực thi mã .

    Timeit hoạt động như thế nào Python?

    Python timeit() là một phương thức trong thư viện Python để đo thời gian thực thi của đoạn mã đã cho . Thư viện Python chạy câu lệnh mã 1 triệu lần và cung cấp thời gian tối thiểu lấy từ bộ đoạn mã đã cho.

    Làm cách nào để đếm thời gian thực hiện trong Python?

    Sử dụng các hàm bên dưới để đo thời gian thực hiện chương trình trong Python. .
    thời gian. thời gian(). Đo tổng thời gian đã trôi qua để thực thi mã tính bằng giây
    thời gian. .
    %timeit và %%timeit. lệnh để lấy thời gian thực hiện của một dòng mã và nhiều dòng mã
    ngày giờ