Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การสร้างกระบวนการลูกโดยใช้ fork() ใน Python


งานของเราคือสร้างโปรเซสลูกและแสดง id โปรเซสของทั้งโปรเซสพาเรนต์และโปรเซสลูกโดยใช้ฟังก์ชัน fork() ใน Python

เมื่อเราใช้ fork() มันจะสร้างสำเนาของมันเอง มันเป็นสิ่งสำคัญมากสำหรับ LINUX, UNIX fork() ใช้เป็นหลักสำหรับสภาพแวดล้อมแบบมัลติเธรดซึ่งหมายความว่าการดำเนินการของเธรดนั้นซ้ำกันสร้างเธรดย่อยจากเธรดหลัก เมื่อมีข้อผิดพลาด เมธอดจะส่งกลับค่าลบ และสำหรับโปรเซสลูกจะส่งกลับ 0 มิฉะนั้นจะส่งกลับค่าบวกซึ่งหมายความว่าเราอยู่ในกระบวนการหลัก

สามารถใช้โมดูล fork() จากโมดูล os หรือจากโมดูลเทอร์มินัล Pseudo ที่เรียกว่า pty ดังนั้นเราควรนำเข้า os หรือ pty สำหรับมัน

fork() ใช้สำหรับสร้างโปรเซส ไม่มีอาร์กิวเมนต์ และส่งคืน ID โปรเซส เหตุผลหลักในการใช้ fork() เพื่อสร้างโปรเซสใหม่ ซึ่งกลายเป็นโปรเซสลูกของผู้โทร เมื่อมีการสร้างโปรเซสลูกใหม่ ทั้งสองโพรเซสจะรันคำสั่งถัดไป

ค่าส่งคืนของ fork() เราสามารถเข้าใจว่าเราอยู่ในกระบวนการใดเมื่อคืนค่า 0 ซึ่งหมายความว่าเราอยู่ในกระบวนการลูก และหากคืนค่าเป็นบวก แสดงว่าเราอยู่ในกระบวนการหลัก และการคืนค่าติดลบหมายความว่ามีข้อผิดพลาดเกิดขึ้น

โค้ดตัวอย่าง

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

ผลลัพธ์

Parent process : 8023
Child process : 8024
$

pty โมดูลยูทิลิตี้เทอร์มินัลหลอกถูกกำหนดเพื่อจัดการกับแนวคิดเทอร์มินัลหลอก เมื่อใช้สิ่งนี้ เราจะสามารถเริ่มกระบวนการอื่น และยังอ่านหรือเขียนจากเทอร์มินัลควบคุมโดยใช้โปรแกรมได้อีกด้วย

โมดูลนี้เป็นแพลตฟอร์มที่มุ่งเน้นอย่างมาก เราควรใช้ระบบ UNIX เพื่อดำเนินการเหล่านี้

โค้ดตัวอย่าง

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()

ผลลัพธ์

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