【发布时间】:2012-04-13 08:30:22
【问题描述】:
我搜索了文档并四处搜索,但没有任何关于阻塞 StringIO 对象的说法。
我可以创建自己的类似文件的对象,该对象只是简单地包裹 StringIO,但最好的方法是如何使其阻塞?我知道的唯一方法是使用 while 循环和 time.sleep(0.1) 直到有可用数据。
【问题讨论】:
-
究竟是什么会阻止它?您正在从字符串中读取数据。
-
StringIO 是一个类似文件的对象,所以它都有一个 '' EOF 和一个 .close() 方法,它使所有其他 read() 引发异常,我希望 EOF 只是阻塞而不是..返回 EOF。
-
也许你想要一个管道来代替。
-
我想问你如何期望
StringIO对象在字符串不可变时解除阻塞,但后来我实际上查看了文档,发现这个限制仅适用于快速实现,@987654322 @,您可以读取或写入,但不能同时读取。我想你有另一个线程可以写。 -
是的,我有另一个线程正在阅读它。它必须是跨平台的,否则我可以使用仅适用于 unix 的“管道”模块。因此,使用阻塞创建我自己的类似文件的对象是我当时采用的最佳方法。 sleep(0.1) 方法最适合吗?