>>>x = subprocess.Popen(["fio", "--filename=/dev/sdd", "--name=job1", "--numjobs=2"], stdout=subprocess.PIPE)
但我需要实时捕捉飞行情报室的进展。我想做一个线程子进程.stdout.readline,但似乎无法更新性能数据:
^{pr2}$它就挂在这之后。在
fio的命令行执行如下所示:
[root@goblinbank tmp]# fio --filename=/dev/sdd --name=job1 --numjobs=2
job1: (g=0): rw=read, bs=4K-4K/4K-4K/4K-4K, ioengine=sync, iodepth=1
...
fio-2.2.11
Starting 2 processes
Jobs: 2 (f=2): [R(2)] [0.2% done] [246.3MB/0KB/0KB /s] [63.5K/0/0 iops] [eta 02h:26m:09s]
“Jobs:2(f=2):[R(2)]”后面的文本用新值保持刷新。在
然后可以使用
fcntl
将其设置为非阻塞IO,如果数据不可读取,它将引发异常。只需添加:创建进程后,使用
^{pr2}$try
/except IOError
子句验证是否有要读取的内容,如下所示:这就解决了这个问题:
注意fio中的
eta=always
标志,Popen中的universal_newlines=True
参数。在更多信息here。在
相关问题 更多 >
编程相关推荐