我想使用匿名管道在Linux两个进程之间传递被pickle序列化的对象。我不想使用subprocess
模块,而是手动创建必要的管道,然后调用pickle.dump
和pickle.load
函数。然而,这最后两个函数需要一个文件对象。所以,在测试期间,我遇到了以下问题。下面的代码可以正常工作:
import os
r, w = os.pipe()
os.write(w, b"test")
os.read(r, 1024)
但是这段代码在读取操作处停滞不前。
import os
r, w = os.pipe()
fr = os.fdopen(r, "rb")
fw = os.fdopen(w, "wb")
fw.write(b"test")
fr.read()
此外,
select.select([r],[],[],0)
显示管道为空。我的问题是:在文件对象创建过程中发生了什么,为什么它对管道无效?是否有办法通过这种方式获取文件对象?