On 01:47 pm, [email protected] wrote: >[email protected] wrote: >>On 9 Sep, 07:12 am, [email protected] wrote: >>>[email protected] wrote: >>>>On 02:21 pm, [email protected] wrote: >>>>>Hello everyone, >>>>> >>>>>I am using wx with twisted and pubsub (not the on in wx but the >>>>>independent one) to notify each one of what is going on. I was >>>>>wondering >>>>>if I should use reactor.callFromThread to call >>>>>publisher.sendMessage >>>>>or >>>>>not? I haven't been doing that until now but I wondered if it was >>>>>better to. >>>>Use reactor.callFromThread if you have code running in a non-reactor >>>>thread and you want it to initiate some action in the reactor >>>>thread. >>>> >>>>So, if publisher.sendMessage is using Twisted APIs or otherwise >>>>requires >>>>that it be run only in the reactor thread, and you need to use it >>>>from >>>>a >>>>non-reactor thread, then use reactor.callFromThread. Otherwise, >>>>don't. >>>> >>>>Jean-Paul >>>Would you consider the wxreactor like a non-reactor thread? >> >>I'm not sure what you mean. The "reactor thread" is the thread that >>"reactor.run()" is called in. Even if you're using wxreactor. >>>I haven't >>>checked out the code behind PyPubSub, but it's basically the >>>Observer-Pattern so when I call publisher.sendMessage(...) it >>>iterates >>>the "subscribers" (observers) and calls the functions they associated >>>w/ >>>the subscription. Those functions are both in the twisted code and >>>the >>>wx code. The Twisted code sends messages nd the wx code brings- >>>up/hides >>>dialogs or frames. In the wxdemo it does : >>> >>># look, we can use twisted calls! >>>reactor.callLater(2, self.twoSecondsPassed) >>> >>>but doesn't use reactor.callFromThread, but unless I'm wrong >>>reactor.callLater does the same thing but deferred in time. I often >>>see >>>reactor.callLater(0, myFunc) being used. >> >>The wx demo doesn't do anything with threads, so it doesn't need to >>use >>callFromThread. So, if you're only doing things like what the wx demo >>does, you probably don't need callFromThread either. >> >>callLater doesn't do the same thing as callFromThread. There might be >>some vague similarities (really the only one is that neither one calls >>the function you pass it right away), but they're for very different >>things. >> >>Jean-Paul > >Ok, well, from looking into the twisted source, it looks like the wx >main loop is run in a seperate thread >(http://twistedmatrix.com/trac/browser/tags/releases/twisted-8.1.0/twisted/internet/wxreactor.py#L60).
That's an implementation detail. You've also misinterpreted it slightly. The wx main loop is run in the same thread reactor.run() is called in. The other thread is used for other things. Jean-Paul _______________________________________________ Twisted-Python mailing list [email protected] http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
