[Python-Dev] Reworking the GIL

Sturla Molden sturla at molden.no
Mon Nov 2 15:40:43 CET 2009

Sturla Molden skrev:
> And just so you don't ask: There should not just be a Sleep(0) in the 
> loop, but a sleep that gets shorter and shorter until a lower 
> threshold is reached, where it skips to Sleep(0). That way we avoid 
> hammering om WaitForMultipleObjects and QueryPerformanceCounter more 
> than we need. And for all that to work better than just giving a 
> timeout to WaitForMultipleObjects, we need the multimedia timer turned 
> on.

The important thing about multimedia timer is that the granularity of 
Sleep() and WaitForMultipleObjects() by default is "10 ms or at most 20 
ms". But if we call


the MM timer is on and granularity becomes 1 ms or at most 2 ms. But we 
can get even more precise than that by hammering on Sleep(0) for 
timeouts less than 2 ms. We can get typical granularity in the order of 
10 µs, with the occational 100 µs now and then. I know this because I 
was using Windows 2000 to generate TTL signals on the LPT port some 
years ago, and watched them on the oscilloscope.

~ 15 ms granularity is Windows default. But that is brain dead.

By the way Antoine, if you think granularity of 1-2 ms is sufficient, 
i.e. no need for µs precision, then just calling timeBeginPeriod(1) will 
be sufficient.



More information about the Python-Dev mailing list