import kaboom import stackless from kaboom import * # This implements the C++ interface that was wrapped for Python. # The wrapper is called first, which gets the override for ReceiveExplosion. # In there is code to ensure we have the GIL, and to release it afterwards. # We're setting a stop variable kind of like I originally was doing in the more # complicated code. I have found it doesn't actually matter, but should work # when all is done. class PoorGuy(ITimeBombCallback): def __init__(self, stop_var): ITimeBombCallback.__init__(self) # Very important for subclasses in Boost.Python self.stop_var = stop_var def ReceiveExplosion(self): print "Got explosion" self.stop_var = True stop_var = False poorGuy = PoorGuy(stop_var) bomb = TimeBomb(poorGuy) bomb.Go() # Busy loop while not stop_var: stackless.schedule() bomb.Join()