Pythonを使用して自分の時計オブジェクトをプログラミングしたいと思います。私はそれが非常に正確であることを望みます。私はWindowsでそれを読んで、私はQueryPerformanceCounter()を使うことができました。しかしどうですか?私はCを知らない。 Python 2.xのみ。Python 2.x - WindowsのQueryPerformanceCounter()
誰かに私がPythonでこれを使ってWinで正確な時計を作るためのヒントを教えてもらえますか?
Pythonを使用して自分の時計オブジェクトをプログラミングしたいと思います。私はそれが非常に正確であることを望みます。私はWindowsでそれを読んで、私はQueryPerformanceCounter()を使うことができました。しかしどうですか?私はCを知らない。 Python 2.xのみ。Python 2.x - WindowsのQueryPerformanceCounter()
誰かに私がPythonでこれを使ってWinで正確な時計を作るためのヒントを教えてもらえますか?
は私が移植されてきたC++ exampleあなたはモジュール使ってPythonに与えてくれた:
C++
LARGE_INTEGER StartingTime, EndingTime, ElapsedMicroseconds;
LARGE_INTEGER Frequency;
QueryPerformanceFrequency(&Frequency);
QueryPerformanceCounter(&StartingTime);
// Activity to be timed
QueryPerformanceCounter(&EndingTime);
ElapsedMicroseconds.QuadPart = EndingTime.QuadPart - StartingTime.QuadPart;
ElapsedMicroseconds.QuadPart *= 1000000;
ElapsedMicroseconds.QuadPart /= Frequency.QuadPart;
Pythonの
import ctypes
import ctypes.wintypes
import time
kernel32 = ctypes.WinDLL('kernel32', use_last_error=True)
starting_time = ctypes.wintypes.LARGE_INTEGER()
ending_time = ctypes.wintypes.LARGE_INTEGER()
elapsed_microseconds = ctypes.wintypes.LARGE_INTEGER()
frequency = ctypes.wintypes.LARGE_INTEGER()
kernel32.QueryPerformanceFrequency(ctypes.byref(frequency))
kernel32.QueryPerformanceCounter(ctypes.byref(starting_time))
# Activity to be timed, e.g.
time.sleep(2)
kernel32.QueryPerformanceCounter(ctypes.byref(ending_time))
elapsed_microseconds = ending_time.value - starting_time.value
elapsed_microseconds *= 1000000
elapsed_microseconds /= frequency.value
print(elapsed_microseconds)
私は本当に便利に感謝を@eryksunのヒント!
上記のコードは、2000000
の近くに何かを印刷する必要があります(例:2000248.7442040185
、値は時々異なる場合があります)。小数を取り除くためにround()
またはint()
関数を使用することもできます。
@eryksunがコメントしたように、time.clock()
も使用できます。これはC言語で実装されており、QueryPerformanceCounter()
も使用しています。
例を使用して1と全く同じことをやって:
import time
starting_time = time.clock()
# Activity to be timed, e.g.
time.sleep(2)
ending_time = time.clock()
elapsed_microseconds = ending_time - starting_time
elapsed_microseconds *= 1000000
print(elapsed_microseconds)
・ホープ、このことができます!
あなたの努力のおかげで多くの感謝が、私はそれを推測するCを学習せずに動作させることはできません。私はあなたが提供した回避策を解決することができないので、Cタイプについてはわかりません –
Hmm ok。あまりにもあなたが周りにいる場合、私はより多くのアイデアを持っている場合、私はあなたにコメントすることができます。 – linusg
私は、これらのc_longlong_Array_1オブジェクトが繰り返し可能であることを知りました。obj [0]は私が考える時間値です: "ElapsedMicroseconds = EndingTime [0] - StartingTime [0]" –
「QueryPerformanceCounter()」はどこですか? Windows API? – linusg
はい - https://msdn.microsoft.com/en-us/library/windows/desktop/ms644904(v=vs.85).aspx –
ありがとうございます。私は今いくつかのテストをしています、私はいくつかのminustesのソリューションを持っていると確信しています。見てください:) – linusg