blocking all threads

sturlamolden sturlamolden at yahoo.no
Mon Sep 29 13:35:58 EDT 2008


On Sep 29, 4:56 pm, Alexandru  Mosoi <brtz... at gmail.com> wrote:

> how can I block all threads for a specific amount of time? (i need to
> sleep whole process for testing purposes). i thought of accessing GIL
> and sleep for some amount of time, but I don't know how to do this and
> whether GIL is recursive.


You could do this in C by sleeping while holding the GIL:

#ifdef WIN32
  #include <Windows.h>
  #define __sleep(ms) Sleep((DWORD)ms)
#else
  #include <unistd.h>
  #define __sleep(ms) usleep((useconds_t)ms)
#endif

__declspec(dllexport)
void sleep(int ms)
{
   __sleep(ms);
}


Save this in a file called "gilsleep.c" and compile it as a DLL
(gilslepp.dll in Windows, gilsleep.so in Linux). Then in Python:

import ctypes
sleep = ctypes.pydll.gilsleep.sleep
sleep.argtypes = (ctypes.c_int,)
sleep.restype = None

sleep(500) # blocks all threads for 500 ms
























More information about the Python-list mailing list