Hướng dẫn how do you timeout a function in python? - làm thế nào để bạn hết thời gian chờ một hàm trong python?
Tôi đã đăng một ý chính giải quyết câu hỏi/vấn đề này với một người trang trí và 2. Đây là một sự cố. Show
Nhập khẩu và thiết lập để tương thíchNó đã được thử nghiệm với Python 2 và 3. Nó cũng sẽ hoạt động trong Unix/Linux và Windows. Đầu tiên là nhập khẩu. Những cố gắng giữ cho mã nhất quán bất kể phiên bản Python:
Sử dụng mã độc lập phiên bản:
Bây giờ chúng tôi đã nhập chức năng của chúng tôi từ thư viện tiêu chuẩn. try: range, _print = xrange, print def print(*args, **kwargs): flush = kwargs.pop('flush', False) _print(*args, **kwargs) if flush: kwargs.get('file', sys.stdout).flush() except NameError: pass 3 Trang tríTiếp theo, chúng ta cần một chức năng để chấm dứt 4 từ luồng con:
Và đây là chính người trang trí:
Cách sử dụngVà đây là cách sử dụng trực tiếp trả lời câu hỏi của bạn về việc thoát sau 5 giây!:
Demo:
Cuộc gọi chức năng thứ hai sẽ không kết thúc, thay vào đó, quá trình sẽ thoát với một dấu vết! try: range, _print = xrange, print def print(*args, **kwargs): flush = kwargs.pop('flush', False) _print(*args, **kwargs) if flush: kwargs.get('file', sys.stdout).flush() except NameError: pass 5 không phải lúc nào cũng dừng một sợi ngủLưu ý rằng giấc ngủ sẽ không phải lúc nào cũng bị gián đoạn bởi ngắt bàn phím, trên Python 2 trên Windows, ví dụ:
Nó cũng không có khả năng làm gián đoạn mã chạy trong các phần mở rộng trừ khi nó kiểm tra rõ ràng 6, xem Cython, Python và Bàn phímTôi sẽ tránh ngủ một chủ đề nhiều hơn một giây, trong mọi trường hợp - đó là EON trong bộ xử lý.
Để bắt nó và làm một cái gì đó khác, bạn có thể bắt gặp bàn phím. Thời gian chờ rất hữu ích khi bạn muốn giới hạn thời gian tối đa để gọi hàm hoặc chạy lệnh. Dưới đây là hai triển khai Python của tôi. (Tôi đã sử dụng Python 3.6.5). Sử dụng đa bộ xử lý để hết thời gian một hàm PythonSử 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. import time Đầu ra là như sau. Mã thoát cho biết chức năng là thời gian chờ (EXITCODE = none) hay hoàn thành. Starting function inc_forever()... Sử dụng quy trình con để hết thời gian một lệnh bên ngoàiKể từ Python 3.5, có một API tiện dụng và được đề xuất api trong mô-đun phụ, có hỗ trợ thời gian chờ tích hợp. 0Khi hết thời gian, nó tăng ngoại lệ 8. 1Đối với Unix, có một cách khác để sử dụng mô-đun tín hiệu để báo hiệu một trình xử lý để tăng ngoại lệ sau 5 giây, nhưng tôi nghĩ rằng nó có một chút thấp và không đơn giản. Làm thế nào để bạn làm một thời gian chờ trong Python?Sau đó, nó đơn giản như thế này để hết thời gian một thử nghiệm hoặc bất kỳ chức năng nào bạn thích: @timeout (5.0) # Nếu thực thi mất nhiều thời gian hơn 5 giây, hãy nâng cao thời gian Chức năng sau khi hết thời gian chờ!@timeout(5.0) # if execution takes longer than 5 seconds, raise a TimeoutError def test_base_regression(self): ... Be careful since this does not terminate the function after timeout is reached!
Làm thế nào để bạn dừng một chức năng sau thời gian trong Python?Hàm Python Sleep () sẽ tạm dừng mã Python hoặc trì hoãn việc thực hiện chương trình trong số giây được đưa ra làm đầu vào cho giấc ngủ ().Hàm giấc ngủ () là một phần của mô -đun thời gian Python.Bạn có thể sử dụng chức năng giấc ngủ Python khi bạn muốn tạm dừng việc thực thi mã của mình. will pause Python code or delay the execution of program for the number of seconds given as input to sleep(). The sleep() function is part of the Python time module. You can make use of Python sleep function when you want to temporarily halt the execution of your code.
Làm thế nào để bạn làm cho Python đợi 5 giây?Nếu bạn đã có một chương trình Python và bạn muốn chờ đợi, bạn có thể sử dụng một hàm đơn giản như thế này: Time.s ngủ (x) trong đó x là số giây mà bạn muốn chương trình của bạn chờ đợi.time. sleep(x) where x is the number of seconds that you want your program to wait.
Làm thế nào để bạn tăng thời gian chờ trong Python?Để đặt thời gian chờ trong các yêu cầu Python, bạn có thể vượt qua tham số "Hết thời gian" để nhận, đăng, đặt, đầu và xóa các phương thức.Tham số "Thời gian chờ" cho phép bạn chọn thời gian tối đa (số giây) để hoàn thành yêu cầu.Theo mặc định, các yêu cầu không có thời gian chờ trừ khi bạn chỉ định rõ ràng một.pass the "timeout" parameter for GET, POST, PUT, HEAD, and DELETE methods. The "timeout" parameter allows you to select the maximum time (number of seconds) for the request to complete. By default, requests do not have a timeout unless you explicitly specify one. |