Python脚本创建子进程proc = subprocess.Popen()
,每隔约1秒向p.txt
写几行。我想在p.txt
运行时实时处理此脚本中的proc
次更新。
...
def seek_file(file, process):
while process.poll() is None:
l = file.readline().strip()
if not l:
sleep(0.1)
continue
else:
yield tuple(l.split('='))
...
p_file = open('p.txt')
data_tuples = seek_file(p_file, proc)
for d in data_tuples:
print(d)
...
为什么这段代码偶尔会变成死锁状态?处理频繁更新文件和显示进度的最佳方法是什么?
答案 0 :(得分:1)
我怀疑这是死锁,只要它在编写文件的过程之前就会旋转。
当您在文件中到达EOF时,即使文件随后增长,文件对象也不会生成新行。您可以通过f.seek(f.tell())
重置此行为,因为搜索(到当前位置)将重置EOF指示符。