[Twisted-Python] Foreign event loop friendly reactor
Sl_Church at sbcglobal.net
Sun Apr 17 18:21:36 EDT 2005
Thanks for your work in developing this new reactor. I just have a
Is it (thread) safe to call wx methods from within call/errbacks with
this reactor? I ask because I was (based upon the example at
translating callbacks into wx.Events executed during the next wx loop
(the PostEvent function is thread safe). If I am understanding the
threadedselectreactor.py code correctly it is "waking" the wx loop and
therefore this should not be needed since only one mainloop will be
active at a time.
Also my understanding is that the reactor.interleave function should be
called ONCE in order to provide a function to wake the foreign event
loop. I am doing this in MyApp.OnInit() and it seems to work fine. The
example shows this being executed in the frame's __init__ function and I
do not think this will work for multiple frames (I'm not saying there is
anything WRONG with the example, I'm just trying to make sure I
understand the correct use of the new reactor when dealing with multiple
I did not have any problems converting my test application to use the
new reactor, but I wanted to clarify these items so they don't bite me
Thanks once again,
sl_church at sbcglobal.net
Bob Ippolito wrote:
> In response to the "wxpython issues" thread I had suggested that we
> should have a thread-using reactor that integrates with foreign event
> loops, so I wrote one and committed it
> (twisted.internet.threadedselectreactor). Since this approach
> requires less maintenance, and whomever maintains the select reactor
> can trivially maintain this as well, I'm "officially" deprecating
> cfreactor (although I never really cared much to maintain it anyway).
> An example of using it to integrate with a foreign event loop is at:
> It should be relatively trivial to show how it could be used to
> integrate with other event loops (wx, Tkinter, pygame, etc.).
> Effectively, it's compatible with anything that has a thread-safe way
> to notify the main event loop.
> In the future, it might make sense to revise the reactor API to
> support "interleave" directly, and change the existing reactors
> accordingly so that more than just select can support this behavior.
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
More information about the Twisted-Python