2012-03-29 5 views
0

私は2つのpythonスクリプトhttps://gist.github.com/2233477を持っています。入力サイズに応じてアプリケーションが複数回実行されるようです

  • rsgen.pysimulate.py
  • simulate.pyで使用するために「ランダム」の入力を生成し、実際のシミュレーション

事は、私が--numReferencesのparamでrsgen.pyからの入力サイズを大きくするために起動したときに、私が得る、あるん異なる出力

# ./rsgen.py --numReferences 1000 > rs.txt; cat rs.txt | xargs ./simulate.py 
Number of page faults : 59 

# ./rsgen.py --numReferences 100000 > rs.txt; cat rs.txt | xargs ./simulate.py 
Number of page faults : 873 
Number of page faults : 848 
Number of page faults : 823 
Number of page faults : 103 

./rsgen.py --numReferences 1000000 > rs.txt; cat rs.txt | xargs ./simulate.py 
Number of page faults : 866 
Number of page faults : 869 
Number of page faults : 876 
Number of page faults : 907 
Number of page faults : 910 
Number of page faults : 1001 
Number of page faults : 845 
... 

注意事項numReference sでは、pythonスクリプトのシミュレーションがより多く実行されるようです。何故ですか?

答えて

2

これは恐らくxargs 'ARG_MAXと何らかの関係があり、実行可能ファイルに送信するargの数のバッチサイズを定義しています。これはおそらく1行の「ページ違反の数:複数の呼び出しの間にargsを分割しているので、スクリプトの複数の呼び出しがなぜ必要なのでしょうか。

-n(または--max-args)のフラグをxargsとしてください。

./rsgen.py --numReferences N > rs.txt; 
./simulate.py -f rs.txt 

それはおそらく多くが速くなりそうxargsオーバーヘッド

+0

[OK]を回避するので:あなたはこのような何かを行うことができるように

良い方法はalltogetherファイル引数を受け入れるsimulate.pyを持っているだろう私はファイル[[FileType'](http://docs.python.org/dev/library/argparse.html#filetype-objects)を使用します。しかし、どうすればそれを読むことができますか?申し訳ありませんが、私はPythonを初めて使用していて、その 'FileType'オブジェクトをどのように読み書きできるのかはっきりしません。 –

+0

@JiewMengファイルオブジェクトを取得するには、ファイル名を文字列として読み込み、次に' open(filename) '.readlines()'を実行することができます。読み終わったら '.close()'を実行する必要があります。参照してください[この質問](http://stackoverflow.com/a/8010133/1086804) –

+0

ああ、しかし、 'FileType'オブジェクトはどのように再生に来るのですか?私はちょうど文字列変数を使用することができますか? –

関連する問題