2
これはPythonで書かれたtail -fの簡単な実装です。これの問題はループの性質にあり、このスクリプトはCPU時間を大幅に増やすことが好きです。フォークされたプロセス/デーモンとして実行したいものなら、非効率的なスタートになります。100%CPUを使用しないtail -f pythonスクリプトを書く
CPUの効率的なtail -fをPythonで記述するにはどうすればよいですか?
# CPU inefficient tail -f
def main():
filename = '/tmp/foo'
file = open(filename, 'r')
st_results = os.stat(filename)
st_size = st_results[6]
file.seek(st_size)
lastmatch = 0
while 1:
where = file.tell()
line = file.readline()
if not line:
time.sleep(1)
file.seek(where)
else:
print line,
本当に、スリープ(1)であっても、CPUを大量に消費していますか?そのファイルは継続的に書かれていますか?考慮したいことがあるかもしれませんが、大部分のCPUをプロセスが使用するのは大丈夫です。特に、他のプロセスがそれを必要としない場合は特にそうです。それ以外の場合は、無駄です(ただし、ポータブルデバイスのバッテリ寿命は例外です)。 – paxdiablo