t.f.t.Threaded(Stage) : class documentation

Part of twisted.flow.threads View Source View In Hierarchy

A stage which runs a blocking iterable in a separate thread

This stage tunnels output from an iterable executed in a separate thread to the main thread. This process is carried out by a result buffer, and returning Cooperate if the buffer is empty. The wrapped iterable's __iter__ and next() methods will only be invoked in the spawned thread.

This can be used in one of two ways, first, it can be extended via inheritance; with the functionality of the inherited code implementing next(), and using init() for initialization code to be run in the thread.

If the iterable happens to have a chunked attribute, and that attribute is true, then this wrapper will assume that data arrives in chunks via a sequence instead of by values.

For example:
   from __future__ import generators
   from twisted.internet import reactor, defer
   from twisted.flow import flow
   from twisted.flow.threads import Threaded

   def countSleep(index):
       from time import sleep
       for index in range(index):
           sleep(.3)
           print "sleep", index
           yield index

   def countCooperate(index):
       for index in range(index):
           yield flow.Cooperate(.1)
           print "cooperate", index
           yield "coop %s" % index

   d = flow.Deferred( flow.Merge(
           Threaded(countSleep(5)),
           countCooperate(5)))

   def prn(x):
       print x
       reactor.stop()
   d.addCallback(prn)
   reactor.run()
Class Instruction Undocumented
Method __init__ Undocumented
Method _process_result Undocumented
Method _stopping Undocumented
Method _process Undocumented
Method _yield executed during a yield statement by previous stage

Inherited from Stage:

Method __iter__ Undocumented
Method next return current result
def __init__(self, iterable, *trap): (source)
Undocumented
def _process_result(self, val): (source)
Undocumented
def _stopping(self): (source)
Undocumented
def _process(self): (source)
Undocumented
def _yield(self): (source)

executed during a yield statement by previous stage

This method is private within the scope of the flow module, it is used by one stage in the flow to ask a subsequent stage to produce its value. The result of the yield is then stored in self.result and is an instance of Failure if a problem occurred.
API Documentation for Twisted, generated by pydoctor at 2011-10-27 15:57:47.