Python 中是否有一种简单的方法来创建一个可以在一个线程中写入并在另一个线程中读取的文件?

Chr*_* B. 3 python

在我正在编写的 python 程序中,我有一个线程,它迭代内存中的大型结构并将其增量写入类似文件的对象中。我有另一个线程,它接受一个类似文件的对象并将其写入磁盘。是否有一种简单的方法来连接这两个线程,以便第一个线程输入的任何数据都将被缓冲到第二个线程?

具体来说,我试图将数据传递给 subprocess.Popen()。该进程将从 stdin 读取,但您不能将“类似文件”的对象传递给 Popen,因为它会调用 stdin.fileno() 并崩溃,除非您有一个真实的文件。

相反,您需要将 PIPE 参数传递给 Popen,这允许您将 proc.stdin 用作类似文件的对象。但是,如果您已经有了一个类似文件的对象,那么似乎没有一个很好的方法将它们两个结合在一起。

Mar*_*wis 5

您应该使用队列模块来跨线程共享顺序数据。您必须创建一个类似文件的 Queue 子类,其中 .read 和 .write 相互阻塞,中间有一个缓冲区。

OTOH,我想知道为什么第一个线程首先无法写入真实文件。