Hướng dẫn python break loop if too long - python break loop nếu quá dài

Khi bạn gọi một hàm trong cùng một luồng, thông thường nó sẽ không trả lại cho đến khi hoàn thành. Chức năng bạn gọi thực sự phải được thiết kế để bị gián đoạn ngay từ đầu. Có nhiều cách để đạt được điều này, với mức độ phức tạp và tổng quát khác nhau.

Có lẽ cách đơn giản nhất là vượt qua giới hạn thời gian cho chức năng của bạn và xử lý công việc trong các khối nhỏ. Sau khi mỗi khối được xử lý, hãy kiểm tra xem thời gian trôi qua có vượt quá thời gian chờ không và nếu vậy, bảo lãnh sớm.

Ví dụ sau đây minh họa ý tưởng này, với công việc mất một lượng thời gian ngẫu nhiên cho mỗi khối mà đôi khi sẽ hoàn thành và đôi khi hết thời gian:

import time
import random
import datetime

class TimeoutException(Exception):
    def __init__(self, *args, **kwargs):
        Exception.__init__(self, *args, **kwargs)

def busy_work():

    # Pretend to do something useful
    time.sleep(random.uniform(0.3, 0.6))

def train_loadbatch_from_lists(batch_size, timeout_sec):

    time_start = datetime.datetime.now()
    batch_xs = []
    batch_ys = []

    for i in range(0, batch_size+1):
        busy_work()
        batch_xs.append(i)
        batch_ys.append(i)

        time_elapsed = datetime.datetime.now() - time_start
        print 'Elapsed:', time_elapsed
        if time_elapsed > timeout_sec:
            raise TimeoutException()

    return batch_xs, batch_ys

def main():

    timeout_sec = datetime.timedelta(seconds=5)
    batch_size = 10
    try:
        print 'Processing batch'
        batch_xs, batch_ys = train_loadbatch_from_lists(batch_size, timeout_sec)
        print 'Completed successfully'
        print batch_xs, batch_ys
    except TimeoutException, e:
        print 'Timeout after processing N records'

if __name__ == '__main__':
    main()

Một cách khác để đạt được điều này là chạy chức năng công nhân trong một luồng riêng biệt và sử dụng Event để cho phép người gọi báo hiệu chức năng công nhân nên chấm dứt sớm.

Một số bài đăng (chẳng hạn như bài viết được liên kết ở trên) đề xuất sử dụng tín hiệu, nhưng không may các tín hiệu có thể gây ra các biến chứng bổ sung, và do đó không được khuyến nghị.

Hướng dẫn python break loop if too long - python break loop nếu quá dài

Nếu bạn cần bỏ qua một phần của vòng lặp hiện tại, bạn đang ở hoặc thoát ra khỏi vòng lặp hoàn toàn, thì bạn có thể sử dụng các câu lệnh ____10 và

for letter in 'freeCodeCamp':
    print('letter :', letter)
1.

Trong bài viết này, tôi sẽ đề cập đến cách sử dụng các câu lệnh ____10 và

for letter in 'freeCodeCamp':
    print('letter :', letter)
1 trong mã Python của bạn.

Cách sử dụng tuyên bố phá vỡ trong Python

Bạn có thể sử dụng câu lệnh

for letter in 'freeCodeCamp':
    print('letter :', letter)
0 nếu bạn cần thoát khỏi vòng lặp
for letter in 'freeCodeCamp':
    print('letter :', letter)
5 hoặc
for letter in 'freeCodeCamp':
    print('letter :', letter)
6 và chuyển sang phần mã tiếp theo.

Trong ví dụ đầu tiên này, chúng tôi có một vòng lặp lặp qua từng chữ cái của Freecodecamp.

for letter in 'freeCodeCamp':
    print('letter :', letter)

Đây là những gì được in vào bảng điều khiển:

Hướng dẫn python break loop if too long - python break loop nếu quá dài

Nếu chúng tôi muốn dừng vòng lặp của chúng tôi tại chữ cái "O", thì chúng tôi có thể sử dụng một câu lệnh

for letter in 'freeCodeCamp':
    print('letter :', letter)
7 theo sau là một câu lệnh
for letter in 'freeCodeCamp':
    print('letter :', letter)
0.

for letter in 'freeCodeCamp':
    if letter == "o":
        break
    print('letter :', letter)

Đây là những gì được in vào bảng điều khiển:

Hướng dẫn python break loop if too long - python break loop nếu quá dài

Trong ví dụ tiếp theo này, chúng tôi đang sử dụng vòng lặp

for letter in 'freeCodeCamp':
    print('letter :', letter)
6 để tăng
for letter in 'freeCodeCamp':
    if letter == "o":
        break
    print('letter :', letter)
0 miễn là
for letter in 'freeCodeCamp':
    if letter == "o":
        break
    print('letter :', letter)
0 nhỏ hơn 20.

num = 5
while num < 20:
    print('Current number :', num)
    num = num + 1

Đây là những gì được in vào bảng điều khiển:

Hướng dẫn python break loop if too long - python break loop nếu quá dài

Chúng tôi có thể thêm một điều kiện bên trong vòng

for letter in 'freeCodeCamp':
    print('letter :', letter)
6 của chúng tôi cho biết nếu
for letter in 'freeCodeCamp':
    if letter == "o":
        break
    print('letter :', letter)
0 là 9, thì thoát ra khỏi vòng lặp.

num = 5
while num < 20:
    print('Current number :', num)
    num = num + 1
    if num == 9:
        break

Đây là những gì được in vào bảng điều khiển:

Hướng dẫn python break loop if too long - python break loop nếu quá dài

Cách sử dụng tuyên bố tiếp tục trong Python

Bạn có thể sử dụng câu lệnh

for letter in 'freeCodeCamp':
    print('letter :', letter)
1 nếu bạn cần bỏ qua lần lặp hiện tại của vòng
for letter in 'freeCodeCamp':
    print('letter :', letter)
5 hoặc
for letter in 'freeCodeCamp':
    print('letter :', letter)
6 và chuyển sang lần lặp tiếp theo.

Trong ví dụ này, chúng tôi đang lặp qua một chuỗi tên của tôi.

for letter in "Jessica":

Bên trong vòng lặp

for letter in 'freeCodeCamp':
    print('letter :', letter)
5, chúng tôi có một điều kiện cho biết nếu chữ cái là "Tôi" sau đó bỏ qua việc lặp đó và chuyển sang lần lặp tiếp theo.

  if letter == "i":
        continue

Đây là những gì mã trông giống như tất cả cùng nhau:

for letter in "Jessica":
    if letter == "i":
        continue
    print(letter)

Đây là những gì được in vào bảng điều khiển:

Hướng dẫn python break loop if too long - python break loop nếu quá dài

Bạn nên nhận thấy rằng chữ "Tôi" không được in vào bảng điều khiển và câu lệnh

for letter in 'freeCodeCamp':
    print('letter :', letter)
1 đã bỏ qua lần lặp đó.

Trong ví dụ tiếp theo này, chúng tôi sẽ in các số theo mức tăng 10 bằng cách sử dụng vòng lặp

for letter in 'freeCodeCamp':
    print('letter :', letter)
6. Chúng tôi sẽ thêm một điều kiện trong vòng lặp cho biết nếu số là 50, thì hãy bỏ qua việc lặp đó và di chuyển sang cái tiếp theo.

num = 10
while num < 100:
    num = num + 10
    if num == 50:
        continue
    print("Current num: ", num)

Đây là những gì được in vào bảng điều khiển:

Hướng dẫn python break loop if too long - python break loop nếu quá dài

Như bạn có thể thấy, số 50 không được in vào bảng điều khiển vì câu lệnh

for letter in 'freeCodeCamp':
    print('letter :', letter)
1 bên trong câu lệnh
for letter in 'freeCodeCamp':
    print('letter :', letter)
7.

Sự kết luận

Các câu lệnh

for letter in 'freeCodeCamp':
    print('letter :', letter)
0 và
for letter in 'freeCodeCamp':
    print('letter :', letter)
1 trong Python được sử dụng để bỏ qua các phần của vòng lặp hiện tại hoặc thoát ra khỏi vòng lặp hoàn toàn.

Câu lệnh

for letter in 'freeCodeCamp':
    print('letter :', letter)
0 có thể được sử dụng nếu bạn cần thoát khỏi vòng lặp
for letter in 'freeCodeCamp':
    print('letter :', letter)
5 hoặc
for letter in 'freeCodeCamp':
    print('letter :', letter)
6 và di chuyển sang phần mã tiếp theo.

Câu lệnh

for letter in 'freeCodeCamp':
    print('letter :', letter)
1 có thể được sử dụng nếu bạn cần bỏ qua lần lặp hiện tại của vòng
for letter in 'freeCodeCamp':
    print('letter :', letter)
5 hoặc
for letter in 'freeCodeCamp':
    print('letter :', letter)
6 và di chuyển sang lần lặp tiếp theo.

Tôi hy vọng bạn thích bài viết này và may mắn nhất trên hành trình Python của bạn.



Học mã miễn phí. Chương trình giảng dạy nguồn mở của Freecodecamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu

Làm thế nào để bạn dừng một chức năng nếu nó mất quá nhiều python?

Để hết thời gian chức năng nếu mất quá nhiều thời gian để kết thúc với Python, chúng ta có thể sử dụng mô -đun tín hiệu. Để tạo lớp chờ. Nó có phương thức xử lý_timeout làm tăng thời gian. Và nó có phương thức __enter__ gọi tín hiệu.use the signal module. to create the timeout class. It has the handle_timeout method that raises a TimeoutError . And it has the __enter__ method that calls signal.

Làm thế nào để bạn phá vỡ một vòng lặp sau một khoảng thời gian nhất định trong Python?

Python dừng lại trong khi lặp lại sau thời gian..
Thời gian nhập khẩu ..
hết thời gian = thời gian.thời gian () + 60*5 # 5 phút kể từ bây giờ ..
Trong khi đúng:.
test = 0 ..
Nếu kiểm tra == 5 hoặc thời gian.Thời gian ()> Thời gian chờ:.
break..
test = test - 1 ..

Làm thế nào để bạn bỏ qua việc lặp lại trong Python?

Bạn có thể sử dụng câu lệnh tiếp tục nếu bạn cần bỏ qua lần lặp hiện tại của A hoặc trong khi vòng lặp và chuyển sang lần lặp tiếp theo.use the continue statement if you need to skip the current iteration of a for or while loop and move onto the next iteration.

Làm thế nào để bạn dừng một vòng lặp sau điều kiện Python?

Trong Python, tuyên bố Break cung cấp cho bạn cơ hội thoát ra khỏi vòng lặp khi một điều kiện bên ngoài được kích hoạt.Bạn sẽ đặt câu lệnh Break trong khối mã trong câu lệnh LOOP của bạn, thường là sau một câu lệnh IF có điều kiện.break statement provides you with the opportunity to exit out of a loop when an external condition is triggered. You'll put the break statement within the block of code under your loop statement, usually after a conditional if statement.