[Python-Dev] Replacing threads with swapcontext()

Nick Coghlan ncoghlan at gmail.com
Wed Mar 31 23:53:50 CEST 2010


Alexander Sabourenkov wrote:
> Hello.
> 
> I have went and replaced Python threads with explicitly-scheduled
> coroutines using swapcontext() family of functions (basically out of
> frustration with the greenlet).
> 
> I have two questions.
> 
> 1. Is it as dangerous to switch C stacks and not switch PyThreadState as
> I suspect? In particular, how tightly is PyThreadState::frame coupled to
> current C stack?

Off the top of my head, recursion limit checks will definitely go
haywire, and I would expect threading.local() and exception handling to
explode at some point (although the latter depends on what you mean by
"switching C stacks" - if you really are just fiddling the stack pointer
without affecting the thread local heap storage mechanisms, the latter
two should be fine. Still doesn't sound like a good idea though).

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia
---------------------------------------------------------------


More information about the Python-Dev mailing list