# ``twisted`.`internet`.`_threadedselect`.`ThreadedSelectReactor``

class documentation

`class ThreadedSelectReactor(posixbase.PosixReactorBase): (source)`

Known subclasses: `twisted.internet.wxreactor.WxReactor`

Implements interfaces: `twisted.internet.interfaces.IReactorFDSet`

View In Hierarchy

A threaded select() based reactor - runs on all POSIX platforms and on Win32.

Method | `__init__` | Undocumented
Method | `addReader` | Add a FileDescriptor for notification of data available to read.
Method | `addWriter` | Add a FileDescriptor for notification of data available to write.
Method | `callLater` | See twisted.internet.interfaces.IReactorTime.callLater.
Method | `doThreadIteration` | Undocumented
Method | `ensureWorkerThread` | Undocumented
Method | `getReaders` | Return the list of file descriptors currently monitored for input events by the reactor.
Method | `getWriters` | Return the list file descriptors currently monitored for output events by the reactor.
Method | `interleave` | No summary
Method | `mainLoop` | Undocumented
Method | `removeAll` | Remove all readers and writers.
Method | `removeReader` | Remove a Selectable for notification of data available to read.
Method | `removeWriter` | Remove a Selectable for notification of data available to write.
Method | `run` | Fire 'startup' System Events, move the reactor to the 'running' state, then run the main loop until it is stopped with `stop()` or `crash()`.
Method | `stop` | Extend the base stop implementation to also wake up the select thread so that `runUntilCurrent` notices the reactor should stop.
Method | `wakeUp` | Wake up the event loop.
Instance Variable | `mainWaker` | Undocumented
Instance Variable | `reads` | Undocumented
Instance Variable | `toMainThread` | Undocumented
Instance Variable | `toThreadQueue` | Undocumented
Instance Variable | `workerThread` | Undocumented
Instance Variable | `writes` | Undocumented
Method | `_doReadOrWrite` | Undocumented
Method | `_doSelectInThread` | Run one iteration of the I/O monitor loop.
Method | `_interleave` | Undocumented
Method | `_mainLoopShutdown` | Undocumented
Method | `_preenDescriptorsInThread` | Undocumented
Method | `_process_Failure` | Undocumented
Method | `_process_Notify` | Undocumented
Method | `_sendToMain` | Undocumented
Method | `_sendToThread` | Undocumented
Method | `_workerInThread` | Undocumented

Inherited from `PosixReactorBase`:

Method | `adoptDatagramPort` | Add an existing listening SOCK_DGRAM socket to the reactor to monitor for read and write readiness.
Method | `adoptStreamConnection` |
Method | `adoptStreamPort` | Create a new `IListeningPort` from an already-initialized socket.
Method | `connectSSL` | Connect a client Protocol to a remote SSL socket.
Method | `connectTCP` | Connect a TCP client.
Method | `connectUNIX` | Connect a client protocol to a UNIX socket.
Method | `connectUNIXDatagram` | Connects a `ConnectedDatagramProtocol` instance to a path.
Method | `installWaker` | Install a `waker' to allow threads and signals to wake up the IO thread.
Method | `listenMulticast` | Connects a given DatagramProtocol to the given numeric UDP port.
Method | `listenSSL` | Connects a given protocol factory to the given numeric TCP/IP port. The connection is a SSL one, using contexts created by the context factory.
Method | `listenTCP` | Connects a given protocol factory to the given numeric TCP/IP port.
Method | `listenUDP` | Connects a given `DatagramProtocol` to the given numeric UDP port.
Method | `listenUNIX` | Listen on a UNIX socket.
Method | `listenUNIXDatagram` | Connects a given `DatagramProtocol` to the given path.
Method | `spawnProcess` | Spawn a process, with a process protocol.
Instance Variable | `waker` | Undocumented
Method | `_handleSignals` | Extend the basic signal handling logic to also support handling SIGCHLD to know when to try to reap child processes.
Method | `_removeAll` | Remove all readers and writers, and list of removed `IReadDescriptor`s and `IWriteDescriptor`s.
Method | `_uninstallHandler` | If a child waker was created and installed, uninstall it now.
Class Variable | `_supportedAddressFamilies` | Undocumented
Instance Variable | `_childWaker` | `None` or a reference to the `_SIGCHLDWaker` which is used to properly notice child process termination.

Inherited from `_SignalReactorMixin` (via `PosixReactorBase`):

Method | `startRunning` | Extend the base implementation in order to remember whether signal handlers should be installed later.
Method | `_reallyStartRunning` | Extend the base implementation by also installing signal handlers, if `self._installSignalHandlers` is true.
Instance Variable | `_installSignalHandlers` | A flag which indicates whether any signal handlers will be installed during startup. This includes handlers for SIGCHLD to monitor child processes, and SIGINT, SIGTERM, and SIGBREAK to stop the reactor.

Inherited from `_DisconnectSelectableMixin` (via `PosixReactorBase`):

Method | `_disconnectSelectable` | Utility function for disconnecting a selectable.

Inherited from `ReactorBase` (via `PosixReactorBase`):

Method | `addSystemEventTrigger` | See twisted.internet.interfaces.IReactorCore.addSystemEventTrigger.
Method | `callFromThread` | Cause a function to be executed by the reactor thread.
Method | `callInThread` | See `twisted.internet.interfaces.IReactorInThreads.callInThread`.
Method | `callWhenRunning` | See twisted.internet.interfaces.IReactorCore.callWhenRunning.
Method | `crash` | See twisted.internet.interfaces.IReactorCore.crash.
Method | `disconnectAll` | Disconnect every reader, and writer in the system.
Method | `doIteration` | Do one iteration over the readers and writers which have been added.
Method | `fireSystemEvent` | See twisted.internet.interfaces.IReactorCore.fireSystemEvent.
Method | `getDelayedCalls` | See `twisted.internet.interfaces.IReactorTime.getDelayedCalls`
Method | `getThreadPool` | See `twisted.internet.interfaces.IReactorThreads.getThreadPool`.
Method | `iterate` | See twisted.internet.interfaces.IReactorCore.iterate.
Method | `removeSystemEventTrigger` | See twisted.internet.interfaces.IReactorCore.removeSystemEventTrigger.
Method | `resolve` | Return a Deferred that will resolve a hostname.
Method | `runUntilCurrent` | Run all pending timed calls.
Method | `sigBreak` | Handle a SIGBREAK interrupt.
Method | `sigInt` | Handle a SIGINT interrupt.
Method | `sigTerm` | Handle a SIGTERM interrupt.
Method | `startRunning` | Method called when reactor starts: do some initialization and fire startup events.
Method | `suggestThreadPoolSize` | See `twisted.internet.interfaces.IReactorThreads.suggestThreadPoolSize`.
Method | `timeout` | Determine the longest time the reactor may sleep (waiting on I/O notification, perhaps) before it must wake up to service a time-related event.
Class Variable | `__name__` | Undocumented
Class Variable | `installed` | Undocumented
Class Variable | `seconds` | Get the current time in seconds.
Instance Variable | `running` | See `IReactorCore.running`
Instance Variable | `threadCallQueue` | Undocumented
Instance Variable | `threadpool` | Undocumented
Instance Variable | `threadpoolShutdownID` | Undocumented
Instance Variable | `usingThreads` | Undocumented
Method | `_cancelCallLater` | Undocumented
Method | `_initThreadPool` | Create the threadpool accessible with callFromThread.
Method | `_initThreads` | Undocumented
Method | `_insertNewDelayedCalls` | Undocumented
Method | `_moveCallLaterSooner` | Undocumented
Method | `_reallyStartRunning` | Method called to transition to the running state. This should happen in the during startup event trigger phase.
Method | `_stopThreadPool` | No summary
Class Variable | `_lock` | Undocumented
Instance Variable | `_cancellations` | Undocumented
Instance Variable | `_eventTriggers` | Undocumented
Instance Variable | `_exitSignal` | See `_ISupportsExitSignalCapturing._exitSignal`
Instance Variable | `_internalReaders` | Undocumented
Instance Variable | `_justStopped` | A flag which is true between the time `reactor.stop` is called and the time the shutdown system event is fired. This is used to determine whether that event should be fired after each iteration through the mainloop. This should be replaced with an explicit state machine.
Instance Variable | `_newTimedCalls` | Undocumented
Instance Variable | `_pendingTimedCalls` | Undocumented
Instance Variable | `_registerAsIOThread` | A flag controlling whether the reactor will register the thread it is running in as the I/O thread when it starts. If `True`, registration will be done, otherwise it will not be.
Instance Variable | `_started` | A flag which is true from the time `reactor.run` is called until the time `reactor.run` returns. This is used to prevent calls to `reactor.run` on a running reactor. This should be replaced with an explicit state machine.
Instance Variable | `_startedBefore` | Undocumented
Instance Variable | `_stopped` | A flag which is true between paired calls to `reactor.run` and `reactor.stop`. This should be replaced with an explicit state machine.
Instance Variable | `_threadpoolStartupID` | Undocumented

Inherited from `PluggableResolverMixin` (via `PosixReactorBase`, `ReactorBase`):

Method | `installNameResolver` | See `IReactorPluggableNameResolver`.
Method | `installResolver` | See `IReactorPluggableResolver`.
Instance Variable | `resolver` | The installed `IResolverSimple`.
Property | `nameResolver` | Implementation of read-only `IReactorPluggableNameResolver.nameResolver`.
Instance Variable | `_nameResolver` | The installed `IHostnameResolver`.

def __init__(self): (source)
overrides `twisted.internet.base.ReactorBase.__init__`

Undocumented

def addReader(self, reader): (source)
from `twisted.internet.interfaces.IReactorFDSet`
overrides `twisted.internet.base.ReactorBase.addReader`
Add a FileDescriptor for notification of data available to read.
def addWriter(self, writer): (source)
from `twisted.internet.interfaces.IReactorFDSet`
overrides `twisted.internet.base.ReactorBase.addWriter`
Add a FileDescriptor for notification of data available to write.
def callLater(self, *args, **kw): (source)
from `twisted.internet.interfaces.IReactorTime`
overrides `twisted.internet.base.ReactorBase.callLater`
See twisted.internet.interfaces.IReactorTime.callLater.
def doThreadIteration(self, timeout): (source)

Undocumented

def ensureWorkerThread(self): (source)

Undocumented

def getReaders(self): (source)
from `twisted.internet.interfaces.IReactorFDSet`
overrides `twisted.internet.base.ReactorBase.getReaders`
Return the list of file descriptors currently monitored for input events by the reactor.

Returns
the list of file descriptors monitored for input events.

def getWriters(self): (source)
from `twisted.internet.interfaces.IReactorFDSet`
overrides `twisted.internet.base.ReactorBase.getWriters`
Return the list file descriptors currently monitored for output events by the reactor.

Returns
the list of file descriptors monitored for output events.

def interleave(self, waker, *args, **kw): (source)

interleave(waker) interleaves this reactor with the current application by moving the blocking parts of the reactor (select() in this case) to a separate thread. This is typically useful for integration with GUI applications which have their own event loop already running.

See the module docstring for more information.

def mainLoop(self): (source)
overrides `twisted.internet.base._SignalReactorMixin.mainLoop`

Undocumented

def removeAll(self): (source)
from `twisted.internet.interfaces.IReactorFDSet`
overrides `twisted.internet.base.ReactorBase.removeAll`

Remove all readers and writers.

Should not remove reactor internal reactor connections (like a waker).

Returns
A list of `IReadDescriptor` and `IWriteDescriptor` providers which were removed.

def removeReader(self, reader): (source)
from `twisted.internet.interfaces.IReactorFDSet`
overrides `twisted.internet.base.ReactorBase.removeReader`
Remove a Selectable for notification of data available to read.
def removeWriter(self, writer): (source)
from `twisted.internet.interfaces.IReactorFDSet`
overrides `twisted.internet.base.ReactorBase.removeWriter`
Remove a Selectable for notification of data available to write.
def run(self, installSignalHandlers=True): (source)
from `twisted.internet.interfaces.IReactorCore`
overrides `twisted.internet.base._SignalReactorMixin.run`
overridden in `twisted.internet.wxreactor.WxReactor`
Fire 'startup' System Events, move the reactor to the 'running' state, then run the main loop until it is stopped with `stop()` or `crash()`.
def stop(self): (source)
from `twisted.internet.interfaces.IReactorCore`
overrides `twisted.internet.base.ReactorBase.stop`
overridden in `twisted.internet.wxreactor.WxReactor`
Extend the base stop implementation to also wake up the select thread so that `runUntilCurrent` notices the reactor should stop.
def wakeUp(self): (source)
overrides `twisted.internet.base.ReactorBase.wakeUp`
Wake up the event loop.
mainWaker = (source)

Undocumented

reads: `dict` = (source)

Undocumented

toMainThread = (source)

Undocumented

toThreadQueue = (source)

Undocumented

workerThread = (source)

Undocumented

writes: `dict` = (source)

Undocumented

def _doReadOrWrite(self, selectable, method, dict): (source)

Undocumented

def _doSelectInThread(self, timeout): (source)

Run one iteration of the I/O monitor loop.

This will run all selectables who had input or output readiness waiting for them.

def _interleave(self): (source)

Undocumented

def _mainLoopShutdown(self): (source)

Undocumented

def _preenDescriptorsInThread(self): (source)

Undocumented

def _process_Failure(self, f): (source)

Undocumented

def _process_Notify(self, r, w): (source)

Undocumented

def _sendToMain(self, msg, *args): (source)

Undocumented

def _sendToThread(self, fn, *args): (source)

Undocumented

def _workerInThread(self): (source)

Undocumented