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