2012-01-13 11 views
2

これは2つの質問からなり、最初の部分は単純です。私は現在の時刻を高解像度の数字として取得しようとしています。これはPerlでTime :: HiResモジュールを使って簡単にできたものです。私はpythonでtime.time()を使って他の場所でこの質問に答えようとしました。唯一のことは、私が2桁の有効数字を得て、何か他のものをインポートしたり、自分の環境で何かを設定したりする必要があるかどうか疑問に思っています。これを見て:LinuxシステムでのPythonでの高分解能時間

>>> import time 
>>> print time.time() 
1326459121.68 

私の2番目の質問は、ドキュメントによると、それはアラームをお届けしますし、時間が浮動小数点数として指定することができると言うsetitimerが、関係しています。私が欲しいものを正確に鳴らします。実際、これによれば、python timer mysteryはかなり使いやすいです。私はその例の正確なコピーを作成する場合でも、私はこれを取得:

[[email protected] python]# ./signal.py 
Traceback (most recent call last): 
    File "./signal.py", line 10, in ? 
    signal.setitimer(signal.ITIMER_REAL, 2, 2) 
AttributeError: 'module' object has no attribute 'setitimer' 

はおそらく、私の問題は、新しいPythonのユーザーとして、私はまだ「のpythonと1」ではないんだということで、おそらく何を理解していないです別れますそれは私に伝えようとしているエラーメッセージです。 signal.setitimerを見つけることができないと不平を言っていますか、あるいは渡している属性に何か問題がありますか?私はそれがsignal.ITIMER_REALを解決できませんでした場合は不思議とこれだけ何が起こるかを見るために0でそれを呼び出して、今それが私に言っています試みた:

[[email protected] python]# ./signal.py 
Traceback (most recent call last): 
    File "./signal.py", line 10, in ? 
    signal.setitimer(0, 2, 2) 
AttributeError: 'module' object has no attribute 'setitimer' 

ので、私はそれ自体signal.setitmerであると信じてする必要がありますそれは問題を抱えています。

アハ!私はちょうど新しいバージョンのPythonでこれをVMで試して問題を理解しました。うまく動作します。私のバージョンのpythonではsetitimerが利用できないようですが、どうやってエラーメッセージからわかりますか?モジュールにはメソッドがないと言ってはいけませんか?不足しているメソッドを呼び出すと、属性がかなり混乱します。

多分それは学習曲線の一部です。とにかく、私はこの2番目の質問をここに残しておくと、他の人が恩恵を受けるかもしれないと思っていましたが、まだ私は時間から高い結果を得ることができないことにまだ悩まされています。この新しいバージョンのPython

+1

pythonでは、関数は一流の市民であり、変数として扱うことができます。その意味で、メソッドは属性であり、混乱しないようにする必要があります。 –

+1

time.time()はより多くのsigfigsを返しますが、 'print'はデフォルトで2しか表示しません。すべての桁を表示するにはprint repr(time.time())を使用します。 – AdamKG

+0

cool!非常に素晴らしい。シンプルな "print time.time()"では、高解像度で印刷することを示すすべてのリファレンスがそうだったので、私は混乱していたと思います。彼らは彼らの投稿に怠け者であるか、読者が何をすべきかを知っていると仮定しただけですか?ちょうど興味があり、記録のためにPythonの文化 –

答えて

4
  • time.time()より多くの桁数を返しますがのreprはsetitimerが見つけることができないとの問題は、あなたの名前のきた非常に単純ためである2

    >>> import time 
    >>> time.time() 
    1326460396.626451 
    >>> print time.time() 
    1326460422.68 
    
  • に切り捨てpythonスクリプト 'signal.py'、スクリプトで 'シグナルをインポート'するときは、シグナルモジュールではなくスクリプトを実際にインポートしています。名前を変更するだけで、うまくいくでしょう。

+0

を吸収しようとすると、私のスクリプトの名前付きシグナルは、Python 2.6.6で正常に動作します。私はPython 2.4.3でxxxにスクリプトの名前を変更しようとしましたが、それでも同じエラーで失敗してしまったので、問題ではありませんでした。 –

+0

'xxx'と同じディレクトリにsignal.pyという名前のファイルがある場合、同じ問題が発生します。 – synthesizerpatel

関連する問題