time.time() strangeness

Nitro nitro at dr-code.org
Tue Feb 26 20:37:22 CET 2008


today I encountered a very odd situation. I am on Windows Vista and using  
Python 2.5.2. Here's a code snippet to illustrate my problem:

# uncomment the next line to trigger the problem
# myExtensionModule.CreateDirect3D9Device()
import time
for i in range(0,100):
     print time.time()

With the line commented time.time() returns a changing value which is what  
I expect. However, when I uncomment it and create a Direct3D9 Device  
[1][2] it keeps printing the very same number over and over! In my project  
I am using twisted which uses time.time() to schedule all calls. Since  
time.time() is completely screwed the whole application breaks.
I took a look at [3], but I can't see any obivous way how this all  
interacts. Specifically I am not sure which API time.time() uses  
internally (timeGetTime maybe?). Knowing this could probably help me debug  
more. I feel like time.time() should not break (unless the vid card  
driver/directx has a major bug). Any idea what might be happening here?
Replacing time.time() with time.clock() in twisted.python.runtime makes  
the problem disappear. I guess because it uses QueryPerformanceCounter.

Thanks for your time,

[1] http://msdn2.microsoft.com/en-us/library/bb172527(VS.85).aspx
[2] http://msdn2.microsoft.com/en-us/library/bb172527(VS.85).aspx

More information about the Python-list mailing list