[Python-Dev] Active Objects in Python
Nick Coghlan
ncoghlan at gmail.com
Wed Sep 28 11:00:43 CEST 2005
Greg Ewing wrote:
> Nick Coghlan wrote:
>
>
>>PEP 342's yield expressions can probably be used to help address that problem,
>>though:
>>
>> class SomeAO(ActiveObject):
>> def processSomeMessage(self):
>> msg = yield
>> # Do something with the message
>> next_msg = yield makeSomeBlockingCall(self)
>> # Do something with the next message
>
>
> I don't see how that helps, since makeSomeBlockingCall()
> is evaluated (and therefore blocks) *before* the yield
> happens.
Chris got it right - I just named the function badly. The idea is that there
would be an interaction with the Active Object's event loop to get the actual
result back once it was available from the thread that actually made the
blocking call. In the meantime, *this* object could continue to handle other
messages.
What the approach allows is to have a single physical thread with a number of
coroutiney-type event handlers running inside it.
Cheers,
Nick.
--
Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
---------------------------------------------------------------
http://boredomandlaziness.blogspot.com
More information about the Python-Dev
mailing list