Python 管道 pipe

Muhammad Maisam Abbas 2023年1月3日
Python 管道 pipe

在作業系統中,管道用於程序間通訊。它是一種將資訊從一個程序傳遞到另一個程序的方式。

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() 方法不相容。
Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

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