使用os.write

时间:2018-07-15 04:24:42

标签: python multiprocessing pipe

由于某些原因,以下代码永远存在

read, write = multiprocessing.Pipe()
os.write(write.fileno(), b"test\n")
print(read.recv())

但这不是

read, write = multiprocessing.Pipe()
write.send("test\n")
print(read.recv())

据我所知,multiprocessing.connection.Connection.send只是在幕后叫os.write,所以在我看来,没有理由不这样做。这是怎么回事?

1 个答案:

答案 0 :(得分:1)

弄清楚了。对于在谷歌搜索时发现此问题的任何人,CPython会将数据大小作为标头发送,这意味着它正在等待等于“测试”的大端表示形式的数据量。

您可以看到有关herehere的证据。