nohup python test.py &
生成されたnohup.outファイルでは、「print」出力は書き込まれず、一部のログ情報もnohup.outに書き込まれません。これは正常ですか?プログラムの実行をバックグラウンドのままにしておきたいのですが、定期的にnohup.outを開くことでプログラムの進行状況を確認できます。たとえば、私のコードには次の行があります。
with open(file_name, 'r', encoding='utf8') :
for index, line in enumerate(f):
logger.info(index)
#print(index)
nohup.outを開いて、「index」の現在の値を確認し、処理されたコンテンツの量を確認します。ただし、このnohup.outでは、「インデックス」情報を確認できません。何故ですか?
以前は同様の方法でプログラムを実行していましたが、nohup.outでインデックスを確認できる場合があります。
私のランニングには何が悪いのでしょうか?
クイックテストの実行に基づいて、stderrへの印刷が最初に行われ、次にスクリプトの最後にstdoutが行われることがわかりました。たまにstdoutを明示的にフラッシュする必要があるか、stderrに印刷できると思います。
stderrに印刷するには、このeprint関数を定義し、印刷する代わりにそれを呼び出します。
import sys
def eprint(*args,**kwrgs):
print(*args,file=sys.stderr,**kwargs)
stdoutをフラッシュするには、
import sys
sys.stdout.flush()#call this periodically
私のテスト:
#test.py
import sys
for x in range(0,10,2):
sys.stdout.write(str(x)+'\n')
sys.stderr.write(str(x+1)+'\n')
nohup python test.py
$ cat nohup.out
1
3
5
7
9
0
2
4
6
8
$
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加