Trả lại mã trong Python

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

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ình

Mộ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 Python

Mã 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

Trạng thái thoát của một quy trình trong lập trình máy tính là một số nhỏ được truyền từ quy trình con (hoặc callee) sang quy trình cha (hoặc người gọi) khi nó thực hiện xong một thủ tục cụ thể hoặc nhiệm vụ được ủy quyền

- Trạng thái thoát, Wikipedia

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át

Mộ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

Đối số tùy chọn arg có thể là một số nguyên cho biết trạng thái thoát (mặc định là 0) hoặc một loại đối tượng khác

— sys — Các tham số và chức năng dành riêng cho hệ thống

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

  • Thoát khỏi Quy trình với sys. thoát () trong Python

Cách lấy mã thoát

Mộ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

= 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 phương thức run() của đứa trẻ trả về bình thường, mã thoát sẽ là 0. Nếu nó kết thúc thông qua sys. exit() với đối số là số nguyên N, mã thoát sẽ là N

— đa xử lý — Song song dựa trên quy trình

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 chung

Chú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

Nếu nó là một số nguyên, số 0 được coi là "kết thúc thành công" và bất kỳ giá trị khác 0 nào được coi là "kết thúc bất thường" bởi shell và những thứ tương tự. Hầu hết các hệ thống yêu cầu nó nằm trong phạm vi 0–127 và nếu không thì sẽ tạo ra kết quả không xác định

— sys — Các tham số và chức năng dành riêng cho hệ thống

Ví dụ

  • 0, Không có. Thành công
  • 1. Lỗi
  • 2. Lỗi cú pháp dòng lệnh
  • 120. Lỗi trong quá trình dọn dẹp
  • 255. Mã thoát khỏi phạm vi

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ể

Nếu nó bị kết thúc bởi tín hiệu N, mã thoát sẽ là giá trị âm -N

— đa xử lý — Song song dựa trên quy trình

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ý?
Tải xuống bảng cheat PDF MIỄN PHÍ của tôi

Mã thoát rõ ràng

Phầ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ông

Chú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

= 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

     = 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