Python 管道 pipe

Muhammad Maisam Abbas 2023年1月3日 2022年5月17日
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