def __init__(self):
if not Pycos._instance:
Pycos._instance = self
self._notifier = _AsyncNotifier()
self._locations = set()
self._location = None
self._name = ''
self.__cur_task = None
self._tasks = {}
self._scheduled = set()
self._suspended = set()
self._timeouts = []
self._quit = False
self._daemons = 0
self._channels = {}
self._rtasks = {}
self._rchannels = {}
self._atexit = []
self._polling = False
self._lock = threading.RLock()
self._complete = threading.Event()
self._complete.set()
self._scheduler = threading.Thread(target=self._schedule)
Pycos._schedulers[id(self._scheduler)] = self
self._scheduler.daemon = True
self._scheduler.start()
if Pycos._instance == self:
atexit.register(self.finish)
logger.info('version %s with %s I/O notifier', __version__, self._notifier._poller_name)
python类RLock()的实例源码
def __init__(self, iocp_notifier):
self._poller_name = 'select'
self._fds = {}
self._events = {}
self._terminate = False
self.rset = set()
self.wset = set()
self.xset = set()
self.iocp_notifier = iocp_notifier
self.cmd_rsock, self.cmd_wsock = _AsyncPoller._socketpair()
self.cmd_rsock.setblocking(0)
self.cmd_wsock.setblocking(0)
self.poller = select.select
self._polling = False
self._lock = threading.RLock()
self.poll_thread = threading.Thread(target=self.poll)
self.poll_thread.daemon = True
self.poll_thread.start()
def __getstate__(self):
"""Unlike a normal CookieJar, this class is pickleable."""
state = self.__dict__.copy()
# remove the unpickleable RLock object
state.pop('_cookies_lock')
return state
def __setstate__(self, state):
"""Unlike a normal CookieJar, this class is pickleable."""
self.__dict__.update(state)
if '_cookies_lock' not in self.__dict__:
self._cookies_lock = threading.RLock()
def __init__(self, maxsize=10, dispose_func=None):
self._maxsize = maxsize
self.dispose_func = dispose_func
self._container = self.ContainerCls()
self.lock = RLock()
def __init__(self, maxsize=10, dispose_func=None):
self._maxsize = maxsize
self.dispose_func = dispose_func
self._container = self.ContainerCls()
self.lock = RLock()
def __getstate__(self):
"""Unlike a normal CookieJar, this class is pickleable."""
state = self.__dict__.copy()
# remove the unpickleable RLock object
state.pop('_cookies_lock')
return state
def __setstate__(self, state):
"""Unlike a normal CookieJar, this class is pickleable."""
self.__dict__.update(state)
if '_cookies_lock' not in self.__dict__:
self._cookies_lock = threading.RLock()
def __init__(self, maxsize=10, dispose_func=None):
self._maxsize = maxsize
self.dispose_func = dispose_func
self._container = self.ContainerCls()
self.lock = RLock()
def __setstate__(self, state):
"""Unlike a normal CookieJar, this class is pickleable."""
self.__dict__.update(state)
if '_cookies_lock' not in self.__dict__:
self._cookies_lock = threading.RLock()
def __init__(self, identifier, execparams):
loggerName = (execparams['NAME_BINDING'].replace('/', '.')).rsplit("_", 1)[0]
Resource.__init__(self, identifier, execparams, loggerName=loggerName)
self.threadControlLock = threading.RLock()
self.process_thread = None
# self.auto_start is deprecated and is only kept for API compatibility
# with 1.7.X and 1.8.0 components. This variable may be removed
# in future releases
self.auto_start = False
def __init__(self, identifier, execparams):
loggerName = (execparams['NAME_BINDING'].replace('/', '.')).rsplit("_", 1)[0]
Resource.__init__(self, identifier, execparams, loggerName=loggerName)
self.threadControlLock = threading.RLock()
self.process_thread = None
# self.auto_start is deprecated and is only kept for API compatibility
# with 1.7.X and 1.8.0 components. This variable may be removed
# in future releases
self.auto_start = False
def __init__(self, identifier, execparams):
loggerName = (execparams['NAME_BINDING'].replace('/', '.')).rsplit("_", 1)[0]
Resource.__init__(self, identifier, execparams, loggerName=loggerName)
self.threadControlLock = threading.RLock()
self.process_thread = None
# self.auto_start is deprecated and is only kept for API compatability
# with 1.7.X and 1.8.0 components. This variable may be removed
# in future releases
self.auto_start = False
def __init__(self, identifier, execparams):
loggerName = (execparams['NAME_BINDING'].replace('/', '.')).rsplit("_", 1)[0]
Resource.__init__(self, identifier, execparams, loggerName=loggerName)
self.threadControlLock = threading.RLock()
self.process_thread = None
# self.auto_start is deprecated and is only kept for API compatability
# with 1.7.X and 1.8.0 components. This variable may be removed
# in future releases
self.auto_start = False
def __init__(self, identifier, execparams):
loggerName = (execparams['NAME_BINDING'].replace('/', '.')).rsplit("_", 1)[0]
Resource.__init__(self, identifier, execparams, loggerName=loggerName)
self.threadControlLock = threading.RLock()
self.process_thread = None
# self.auto_start is deprecated and is only kept for API compatability
# with 1.7.X and 1.8.0 components. This variable may be removed
# in future releases
self.auto_start = False
def __init__(self, identifier, execparams):
loggerName = (execparams['NAME_BINDING'].replace('/', '.')).rsplit("_", 1)[0]
Resource.__init__(self, identifier, execparams, loggerName=loggerName)
self.threadControlLock = threading.RLock()
self.process_thread = None
# self.auto_start is deprecated and is only kept for API compatability
# with 1.7.X and 1.8.0 components. This variable may be removed
# in future releases
self.auto_start = False
def __init__(self, identifier, execparams):
loggerName = (execparams['NAME_BINDING'].replace('/', '.')).rsplit("_", 1)[0]
Resource.__init__(self, identifier, execparams, loggerName=loggerName)
self.threadControlLock = threading.RLock()
self.process_thread = None
# self.auto_start is deprecated and is only kept for API compatability
# with 1.7.X and 1.8.0 components. This variable may be removed
# in future releases
self.auto_start = False
def __init__(self, identifier, execparams):
loggerName = (execparams['NAME_BINDING'].replace('/', '.')).rsplit("_", 1)[0]
Resource.__init__(self, identifier, execparams, loggerName=loggerName)
self.threadControlLock = threading.RLock()
self.process_thread = None
# self.auto_start is deprecated and is only kept for API compatability
# with 1.7.X and 1.8.0 components. This variable may be removed
# in future releases
self.auto_start = False
def __init__(self, identifier, execparams):
loggerName = (execparams['NAME_BINDING'].replace('/', '.')).rsplit("_", 1)[0]
Resource.__init__(self, identifier, execparams, loggerName=loggerName)
self.threadControlLock = threading.RLock()
self.process_thread = None
# self.auto_start is deprecated and is only kept for API compatibility
# with 1.7.X and 1.8.0 components. This variable may be removed
# in future releases
self.auto_start = False
def __init__(self, identifier, execparams):
loggerName = (execparams['NAME_BINDING'].replace('/', '.')).rsplit("_", 1)[0]
Resource.__init__(self, identifier, execparams, loggerName=loggerName)
self.threadControlLock = threading.RLock()
self.process_thread = None
# self.auto_start is deprecated and is only kept for API compatability
# with 1.7.X and 1.8.0 components. This variable may be removed
# in future releases
self.auto_start = False