Bạn có thể đặt mã thoát cho một quy trình qua sys. exit() và truy xuất mã thoát thông qua thuộc tính exitcode trên đa xử lý. lớp quy trình Show Trong hướng dẫn này, bạn sẽ khám phá cách lấy và đặt mã thoát cho các quy trình trong Python Bắt đầu nào Mục lục Cần mã thoát quy trìnhMột tiến trình là một thể hiện đang chạy của một chương trình máy tính Mỗi chương trình Python được thực thi trong một Quy trình, đây là phiên bản mới của trình thông dịch Python. Quá trình này có tên MainProcess và có một luồng được sử dụng để thực hiện các hướng dẫn của chương trình được gọi là MainThread. Cả quy trình và luồng đều được tạo và quản lý bởi hệ điều hành bên dưới Đôi khi chúng ta có thể cần tạo các tiến trình con mới trong chương trình của mình để thực thi mã đồng thời Python cung cấp khả năng tạo và quản lý các quy trình mới thông qua cơ chế đa xử lý. lớp quy trình Trong đa xử lý, chúng ta có thể cần báo cáo thành công hay thất bại của một tác vụ được thực hiện bởi một tiến trình con cho các tiến trình khác Điều này có thể đạt được bằng cách sử dụng mã thoát Mã thoát là gì và làm cách nào chúng ta có thể sử dụng chúng giữa các quy trình trong Python? Chạy các vòng lặp của bạn bằng cách sử dụng tất cả các CPU, tải xuống cuốn sách MIỄN PHÍ của tôi để tìm hiểu cách thực hiện Cách sử dụng mã thoát trong PythonMã thoát hoặc trạng thái thoát là một cách để một quá trình chia sẻ với một quá trình khác cho dù quá trình đó đã kết thúc và nếu có thì liệu quá trình đó có kết thúc thành công hay không
Mã thoát thường là một giá trị số nguyên để biểu thị thành công hay thất bại của quy trình, nhưng cũng có thể có một thông báo chuỗi liên quan Chúng ta hãy xem xét kỹ hơn cách chúng ta có thể đặt mã thoát trong một quy trình và cách một quy trình khác có thể kiểm tra mã thoát của một quy trình Cách đặt mã thoátMột quy trình có thể đặt mã thoát tự động hoặc rõ ràng Ví dụ: nếu quá trình thoát bình thường, mã thoát sẽ được đặt thành 0. Nếu quá trình kết thúc do lỗi hoặc ngoại lệ, mã thoát sẽ được đặt thành một Một quy trình cũng có thể đặt mã thoát của nó khi thoát một cách rõ ràng Điều này có thể đạt được bằng cách gọi và chuyển mã thoát làm đối số hệ thống. Hàm exit() sẽ đưa ra một ngoại lệ SystemExit trong quy trình hiện tại, điều này sẽ chấm dứt quy trình
Hàm này phải được gọi trong luồng chính của quy trình và giả định rằng ngoại lệ SystemExit không được xử lý Giá trị đối số bằng 0 cho biết thoát thành công Ví dụ 1 2 3 .. . # thoát thành công sys. thoát(0) Đây là giá trị mặc định của đối số và không cần phải chỉ định Ví dụ 1 2 3 .. . # thoát thành công sys. thoát() Việc chuyển một giá trị Không làm đối số cũng sẽ được hiểu là thoát thành công Ví dụ 1 2 3 .. . # thoát thành công sys. thoát(Không có) Một giá trị nguyên dương biểu thị một lần thoát không thành công, thường là giá trị của một Ví dụ 1 2 3 .. . # thoát không thành công sys. thoát(1) Ngoài ra, một thông báo chuỗi có thể được cung cấp làm đối số Điều này sẽ được hiểu là một lối thoát không thành công, e. g. một giá trị của một và thông báo sẽ được báo cáo trên stderr Ví dụ 1 2 3 .. . # thoát không thành công sys. thoát('Đã xảy ra chuyện không hay') Bạn có thể tìm hiểu thêm về hệ thống. hàm exit() trong hướng dẫn
Cách lấy mã thoátMột quy trình khác có thể lấy mã thoát của một quy trình thông qua thuộc tính “exitcode” của quy trình Ví dụ 1 2 3 .. . # lấy mã thoát mã = quy trình. mã thoát Điều này có nghĩa là chúng tôi yêu cầu một hệ thống đa xử lý. Ví dụ quy trình cho quy trình. Ví dụ: chúng ta có thể bám vào thể hiện của quy trình khi tạo quy trình con Thuộc tính mã thoát chứa giá trị được đặt bởi hệ thống gọi quy trình. exit() hoặc giá trị được đặt tự động nếu quá trình kết thúc bình thường hoặc có lỗi
Nếu quá trình chưa kết thúc, giá trị mã thoát sẽ không được đặt và sẽ có giá trị Không có Giá trị mã thoát chungChúng tôi có thể đặt mã thoát cho một quy trình có ý nghĩa đối với ứng dụng Điều này cho phép một quá trình giao tiếp với một quá trình khác về trạng thái cụ thể của nó khi thoát Ngoài ra, còn có một số giá trị mã thoát thường được sử dụng Ví dụ: giá trị số nguyên thường nằm trong khoảng từ 0-255 và giá trị 0-127 có thể được dành riêng cho các tình huống hoặc lỗi phổ biến
Ví dụ
Mã thoát âm có thể được gán cho một quy trình nếu quy trình bị chấm dứt thông qua một tín hiệu cụ thể
Bây giờ chúng ta đã biết cách nhận và đặt mã thoát cho một quy trình, hãy xem một số ví dụ đã hoạt động Bối rối với API mô-đun đa xử lý? Mã thoát rõ ràngPhần này cung cấp các ví dụ về cách đặt rõ ràng mã thoát khi kết thúc một quy trình Ví dụ về mã thoát thành côngChúng ta có thể khám phá việc đặt mã thoát thành công trong quy trình con Trong ví dụ này, chúng tôi sẽ tạo một tiến trình con để thoát khỏi chức năng tùy chỉnh. Quá trình con sẽ chặn trong một giây, sau đó thoát với mã thoát thành công rõ ràng Đầu tiên, chúng ta có thể định nghĩa hàm để thực thi trong hàm con Chức năng sẽ ngủ trong một giây, sau đó gọi sys. hàm exit() có đối số bằng 0 để biểu thị thoát thành công Hàm task() bên dưới thực hiện điều này 1 2 3 4 5 6 # chức năng được thực thi trong một tiến trình con def nhiệm vụ(). # khối trong giây lát ngủ(1) # thoát thành công thoát(0) Tiếp theo, trong quy trình chính, chúng tôi sẽ định cấu hình một phiên bản quy trình mới để thực thi hàm task() của chúng tôi 1 2 3 .. . # cấu hình quy trình mới con = Quy trình(mục tiêu=task) Quá trình sau đó được bắt đầu và quá trình chính sẽ chặn cho đến khi quá trình con kết thúc 1 2 3 4 5 .. . # bắt đầu tiến trình con con. bắt đầu() # đợi quá trình con kết thúc con. tham gia() Cuối cùng, tiến trình chính lấy mã thoát cho tiến trình con và báo cáo giá trị 1 2 3 4 .. . # kiểm tra mã thoát cho tiến trình con mã = con. mã thoát in(f'Mã thoát con. {code}') Liên kết điều này lại với nhau, ví dụ hoàn chỉnh được liệt kê bên dưới 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #Trăn Siêu Nhanh. com # ví dụ về mã thoát thành công từ thời gian nhập ngủ từ đa xử lý nhập Quy trình từ sys nhập thoát
# chức năng được thực thi trong một tiến trình con def nhiệm vụ(). # khối trong giây lát ngủ(1) # thoát thành công thoát(0)
#bảo vệ điểm vào if __name__ == '__main__'. # định cấu hình quy trình mới con = Quy trình(target=task) # bắt đầu quy trình con con. bắt đầu() # chờ quá trình con kết thúc con. tham gia() # kiểm tra mã thoát cho quy trình con mã = con. mã thoát in(f'Mã thoát con. {code}') Chạy ví dụ đầu tiên sẽ tạo và bắt đầu tiến trình con Quá trình chính sau đó chặn cho đến khi quá trình con kết thúc Quá trình con ngủ trong một giây, sau đó thoát với mã thoát bằng 0, biểu thị thành công Tiến trình con kết thúc thì tiến trình chính tiếp tục. Nó lấy mã thoát từ tiến trình con và báo cáo giá trị Trong trường hợp này, chúng ta có thể thấy nó có giá trị 0 cho biết một lần thoát không thành công được đặt tự động khi quá trình con thoát với một ngoại lệ Mã hóa trả về là gì?Câu lệnh trả về kết thúc việc thực thi hàm và trả lại quyền điều khiển cho hàm gọi . Thực thi tiếp tục trong chức năng gọi tại thời điểm ngay sau cuộc gọi. Một câu lệnh return có thể trả về một giá trị cho hàm gọi.
Trả về 1 trong Python là gì?khi bạn trả về 1, về cơ bản bạn đang trả về True làm giá trị cuối cùng của hàm trong khi trả về 0 về cơ bản trả về False làm giá trị cuối cùng .
Tôi có thể trả lại bản in bằng Python không?Trong Python chúng ta sử dụng từ khóa “return”, ở đây chúng ta có thể sử dụng một hàm có hoặc không có câu lệnh return.
. Sự khác biệt giữa Return và Print Statement trong Python |