Hướng dẫn python stop function if takes too long - Chức năng dừng python nếu mất quá nhiều thời gian
Quá trình để thời gian ra một hoạt động được mô tả trong tài liệu cho tín hiệu. Show
Ý tưởng cơ bản là sử dụng các trình xử lý tín hiệu để đặt báo thức trong một khoảng thời gian và tăng một ngoại lệ một khi bộ đếm thời gian hết hạn. Lưu ý rằng điều này sẽ chỉ hoạt động trên Unix. Đây là một triển khai tạo ra một trình trang trí (lưu mã sau là 3).
Điều này tạo ra một người trang trí gọi là 4 có thể được áp dụng cho bất kỳ chức năng chạy dài nào.Vì vậy, trong mã ứng dụng của bạn, bạn có thể sử dụng bộ trang trí như vậy: Python cho phép bạn xây dựng các quy trình và chức năng chạy dài. Nhưng đôi khi bạn có thể muốn dừng thực thi mã sau một khoảng thời gian nhất định. Nếu bạn đang xây dựng các quy trình chạy dài, nên thêm các cơ chế giống như thời gian chờ để đảm bảo rằng chúng không chạy mãi mãi và tiêu thụ tài nguyên không cần thiết. Trong bài viết này, chúng tôi sẽ học cách dừng mã Python sau một khoảng thời gian nhất định. Dưới đây là các bước để thiết lập thời gian chờ cho chức năng Python. 1. Nhập thư viện cần thiếtĐầu tiên, chúng tôi nhập các thư viện cần thiết như đa xử lý và thời gian. import multiprocessing import time 2. Tạo chức năng PythonTiếp theo, chúng tôi tạo ra một chức năng Python mất nhiều thời gian để hoàn thành. def foo(n): for i in range(10000 * n): print i time.sleep(1) Các hàm trên về cơ bản in 1 số tuần tự (ví dụ: 0, 1, 2, 3, phạm) cứ sau 1 giây, trong 10000*n giây, trong đó n là đầu vào của người dùng. Vì vậy, phải mất rất nhiều thời gian để hoàn thành, như bạn có thể thấy. 3. Thêm mã thời gian chờTiếp theo, chúng tôi thêm mã để gọi chức năng FOO và thời gian chờ sau 10 giây. if __name__ == '__main__': # Start foo as a process p = multiprocessing.Process(target=foo, name="Foo", args=(10,)) p.start() # Wait 10 seconds for foo time.sleep(10) # Terminate foo p.terminate() # Cleanup p.join() Trong mã trên, chúng tôi bắt đầu một quá trình để chạy chức năng FOO và vượt qua đối số = 10. Vì vậy, nó sẽ chạy trong 100.000 giây. Hàm p.start () sẽ bắt đầu quá trình. Thời gian.Sle ngủ (10) sẽ đợi chức năng FOO chạy trong 10 giây. Sau khi thời gian chờ kết thúc, hàm p.terminate () sẽ chấm dứt hàm foo. p.join () được sử dụng để tiếp tục thực hiện luồng chính. Đây là mã hoàn chỉnh cho tài liệu tham khảo của bạn #!/usr/bin/env python #test.py import multiprocessing import time def foo(n): for i in range(10000 * n): print i time.sleep(1) if __name__ == '__main__': # Start foo as a process p = multiprocessing.Process(target=foo, name="Foo", args=(10,)) p.start() # Wait 10 seconds for foo time.sleep(10) # Terminate foo p.terminate() # Cleanup p.join() Nếu bạn chạy tập lệnh trên, nó sẽ chạy trong 10 giây và chấm dứt sau đó. Cũng có những cách khác để làm điều tương tự. Ví dụ: bạn cũng có thể sử dụng mô -đun tín hiệu để thực hiện thời gian chờ cho cuộc gọi chức năng. Cũng đọc: Cách chuyển đổi byte thành chuỗi trong Pythonhow để lưu trữ đầu ra của lệnh cắt trong shell varablehow để sử dụng các biến shell trong AWK Scripthow để thiết lập các khóa SSH trong Linuxhow để tạo thư mục lồng nhau trong Python Bài viết liên quan:
Xây dựng vấn đềDung dịch Cài đặt và nhập func_timeout Ví dụ giải pháp hướng dẫn Example: Chức năng đi qua def long_function(n): while True: pass Đối số chức năng Giả sử bạn cần gọi một hàm dài có khả năng nhưng bạn chỉ có thể đợi thời gian cố định để chức năng chấm dứt. Nếu hàm chấm dứt trong khoảng thời gian, bạn sẽ lấy giá trị trả về hàm. def run_function(f, max_wait, default_value): pass x = run_function(long_function, 5, 'world') print(x) # world Nếu hàm không chấm dứt trong khoảng thời gian, bạn muốn lấy giá trị mặc định (dự phòng). Với chức năng sau 5 chạy mãi mãi trong một vòng lặp trong khi vòng lặp:Trong mã chính của bạn, bạn muốn chạy chức năng và chờ một số giây nhất định như được đưa ra bởi biến ____ ____ 16 nhưng không còn nữa. Dung dịchCài đặt và nhập func_timeout Ví dụ giải pháp hướng dẫn func_timeout(timeout, func, args=(), kwargs=None) Chức năng đi qua Đối số chức năng Giả sử bạn cần gọi một hàm dài có khả năng nhưng bạn chỉ có thể đợi thời gian cố định để chức năng chấm dứt.
Nếu hàm không trả về bất cứ điều gì trong ràng buộc thời gian nhất định, bạn muốn trả về một giá trị được chỉ định theo mặc định ( 7).Cài đặt và nhập func_timeoutVí dụ giải pháp hướng dẫn $ pip install func_timeout Chức năng đi qua Đối số chức năng Giả sử bạn cần gọi một hàm dài có khả năng nhưng bạn chỉ có thể đợi thời gian cố định để chức năng chấm dứt. Ví dụ giải pháp hướng dẫnChức năng đi qua: Let’s have a look at the following code snippet that showcases how to solve the specified problem—I’ll explain it subsequently after the code: 0Đối số chức năng Giả sử bạn cần gọi một hàm dài có khả năng nhưng bạn chỉ có thể đợi thời gian cố định để chức năng chấm dứt. Nếu hàm chấm dứt trong khoảng thời gian, bạn sẽ lấy giá trị trả về hàm. Nếu hàm không chấm dứt trong khoảng thời gian, bạn muốn lấy giá trị mặc định (dự phòng). Chức năng đi quaĐối số chức năng 1Giả sử bạn cần gọi một hàm dài có khả năng nhưng bạn chỉ có thể đợi thời gian cố định để chức năng chấm dứt. Đối số chức năngGiả sử bạn cần gọi một hàm dài có khả năng nhưng bạn chỉ có thể đợi thời gian cố định để chức năng chấm dứt. Nếu hàm chấm dứt trong khoảng thời gian, bạn sẽ lấy giá trị trả về hàm. 2Tất nhiên, bạn cũng có thể vượt qua nhiều đối số bằng cách chỉ định danh sách độ dài lớn hơn 1 là đối số cho if __name__ == '__main__': # Start foo as a process p = multiprocessing.Process(target=foo, name="Foo", args=(10,)) p.start() # Wait 10 seconds for foo time.sleep(10) # Terminate foo p.terminate() # Cleanup p.join()5 như vậy: def long_function(n): while True: pass2 sẽ gọi hàm def long_function(n): while True: pass3. Trong khi làm việc như một nhà nghiên cứu trong các hệ thống phân tán, Tiến sĩ Christian Mayer đã tìm thấy tình yêu của mình đối với việc dạy các sinh viên khoa học máy tính. Để giúp học sinh đạt được thành công cao hơn của Python, ông đã thành lập trang web giáo dục chương trình Finxter.com. Ông là tác giả của cuốn sách lập trình phổ biến Python Oneer (Nostarch 2020), đồng tác giả của loạt sách Break Break Python, những cuốn sách tự xuất bản, người đam mê khoa học máy tính, freelancer và chủ sở hữu của một trong 10 blog Python lớn nhất trên toàn thế giới. Niềm đam mê của ông là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ tăng cường các kỹ năng của họ. Bạn có thể tham gia học viện email miễn phí của anh ấy ở đây. Làm cách nào để dừng mã Python sau một khoảng thời gian nhất định?Sử dụng thời gian.time () để dừng vòng lặp một thời gian sau một khoảng thời gian nhất định. Gọi time_start = thời gian. Time () để sử dụng Time_Start như một biến theo dõi khi vòng lặp trong khi bắt đầu. time() to stop a while loop after a certain amount of time. Call time_start = time. time() to use time_start as a variable that keeps track of when the while loop starts.
Làm thế nào để bạn hết thời gian một chức năng trong Python?Sử dụng đa xử lý để hết thời gian chờ một chức năng Python Sử dụng một quy trình để giữ thời gian/kiểm tra thời gian chờ và một quy trình khác để gọi chức năng Python này.Từ đa xử lý quá trình nhập processDef inc_forever (): print ('bắt đầu hàm inc_forever () ...') print (next (counter)) def return_zero ():
Use one process to keep time/check timeout and another process to call this Python function. from multiprocessing import Processdef inc_forever(): print('Starting function inc_forever()...') print(next(counter))def return_zero():
Làm thế nào để bạn dừng chức năng Python khi một điều kiện nhất định được đáp ứng?Để dừng thực thi mã trong Python, trước tiên bạn cần nhập đối tượng SYS.Sau đó, bạn có thể gọi phương thức EXIT () để dừng chương trình chạy.Đó là cách đáng tin cậy nhất, đa nền tảng để dừng thực thi mã.call the exit() method to stop the program from running. It is the most reliable, cross-platform way of stopping code execution.
Làm cách nào để giới hạn thời gian chạy trong Python?Sau khi cài đặt, bạn có thể nhập mô -đun func_timeout và sử dụng hàm func_timeout () có cùng tên trong mã Python của bạn để giới hạn thời gian thực hiện của một hàm nhất định.import the func_timeout module and use the func_timeout() function with the same name in your Python code to limit the execution time of a given function. |