Computer >> Máy Tính >  >> Lập trình >> Python

Tạo quy trình con bằng fork () trong Python

Nhiệm vụ của chúng tôi là tạo một quy trình con và hiển thị id quy trình của cả quy trình mẹ và quy trình con bằng cách sử dụng hàm fork () trong Python.

Khi chúng ta sử dụng fork (), nó sẽ tạo ra một bản sao của chính nó, nó là một khía cạnh rất quan trọng của LINUX, UNIX. fork () chủ yếu áp dụng cho môi trường đa luồng có nghĩa là quá trình thực thi của luồng được nhân bản tạo ra một luồng con từ một luồng cha. Khi có lỗi, phương thức sẽ trả về giá trị âm và đối với quy trình con, nó trả về 0, Ngược lại, nó trả về giá trị dương có nghĩa là chúng ta đang ở trong quy trình mẹ.

Mô-đun fork () có thể được sử dụng từ mô-đun os hoặc từ mô-đun đầu cuối Pseudo được gọi là pty. Vì vậy, chúng ta nên nhập hệ điều hành hoặc pty cho nó.

Ngã ba () được sử dụng để tạo một quy trình, nó không có đối số và trả về ID quy trình. Lý do chính cho việc sử dụng fork () để tạo một quy trình mới trở thành quy trình con của người gọi. Khi một quy trình con mới được tạo, cả hai quy trình sẽ thực hiện lệnh tiếp theo.

Giá trị trả về của fork () chúng ta có thể hiểu chúng ta đang ở trong tiến trình nào khi trả về 0, nghĩa là chúng ta đang ở trong tiến trình con và nếu trả về giá trị dương nghĩa là chúng ta đang ở trong tiến trình mẹ và trả về giá trị âm có nghĩa là một số lỗi đã xảy ra.

Mã mẫu

import os
   def parentchild():
      n = os.fork()
   if n > 0:
      print("Parent process : ", os.getpid())
   else:
      print("Child proces : ", os.getpid())
# Driver code
parentchild()

Đầu ra

Parent process : 8023
Child process : 8024
$

Pty mô-đun tiện ích Pseudo-terminal được định nghĩa để xử lý các khái niệm giả thiết bị đầu cuối. Sử dụng điều này, chúng tôi có thể bắt đầu một quy trình khác và cũng có thể đọc hoặc ghi từ điều khiển thiết bị đầu cuối bằng các chương trình.

Mô-đun này mang tính định hướng nền tảng cao. Chúng ta nên sử dụng hệ thống UNIX để thực hiện các hoạt động này.

Mã mẫu

import pty, os
   def process_parent_child():
      (process_id, fd) = pty.fork()
   print("The Process ID for the Current process is: " + str(os.getpid()))
   print("The Process ID for the Child process is: " + str(process_id))
process_parent_child()

Đầu ra

The Process ID for the Current process is: 12508
The Process ID for the Child process is: 12509