Python 管道 pipe
Muhammad Maisam Abbas
2023年1月3日
在作業系統中,管道用於程序間通訊。它是一種將資訊從一個程序傳遞到另一個程序的方式。
os
模組提供了與 Python 中的作業系統互動的功能。
在 Python2 中使用 os.pipe()
函式建立管道
os.pipe()
函式返回兩個檔案描述符;一種用於將資料寫入管道,另一種用於讀取寫入管道的資料。我們將建立一個管道在兩個程序之間傳遞資訊。
import os
r, w = os.pipe()
p_id = os.fork()
if p_id:
os.close(w)
r = os.fdopen(r)
print("Parent process reading data from the pipe")
data = r.read()
print("data =", data)
else:
os.close(r)
w = os.fdopen(w, "w")
print("Child writing data to the pipe")
w.write("data written by the child")
w.close()
子程序使用 w
檔案描述符將一些資料寫入管道,而父程序使用 r
檔案描述符讀取寫入管道的資料。
輸出:
Child writing data to the pipe
Parent process reading data from the pipe
data = data written by the child
管道一次只允許一項操作。因此,在從中讀取資料時,我們必須關閉 w
檔案描述符,而在寫入資料時,我們必須使用 os.close()
方法關閉 r
檔案描述符。
注意
上述程式碼在 Linux 上執行良好,但在 Windows 上執行時會引發異常,因為
os.fork()
方法不相容。Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn