2

この行にかかった時間をミリ秒単位で測定したいと思います。

before=datetime.datetime.now()  
response = urllib2.urlopen("https://www.google.com")
after=datetime.datetime.now()

これは、pingが返らないサーバーの一種の回避策であると考えられるため、サーバーの応答から測定する必要があります。2回差し引くと、文字列を文字列に戻すことができますミリ秒をサブストリングとして取得できますが、ミリ秒をよりクリーンな方法で取得したいと思います(秒から変換された時間を含む、ミリ秒単位の全体の差) 、サーバーが非常に大きな遅延で応答する場合)。

4

2 に答える 2

5

after - beforeそのメソッドがあなたが探しているものを与えるオブジェクトdatetime.timedeltaです。total_seconds追加情報はPythonのドキュメントにあります。

ミリ秒を取得するには、1000を掛けるだけです。total_secondsメソッドは呼び出されますが、小数点以下の桁数としてミリ秒が含まれているので、心配しないでください。サンプル出力:

>>> d = t1 - t0
>>> d.total_seconds()
2.429001

ただし、これによってタイムアウトが発生することはなく、期間が測定されるだけです。

于 2012-08-21T11:39:28.163 に答える
1

urlopenタイムアウトパラメータを渡すことができ、その時間が経過すると自動的に中止されます。ドキュメントから:

 urllib2.urlopen(url[, data][, timeout])

オプションのtimeoutパラメーターは、接続試行などのブロック操作のタイムアウトを秒単位で指定します(指定されていない場合は、グローバルなデフォルトのタイムアウト設定が使用されます)。これは実際にはHTTP、HTTPS、FTP接続でのみ機能します。


Pythonには、実際には小さなコードのタイミングをとるためのメカニズムがありますtimeit.Timer---しかし、それはパフォーマンスのプロファイリングとテストのためであり、独自のタイムアウトを実装するためではありません。

于 2012-08-21T11:37:00.007 に答える