Changeset 391 for python/trunk/Lib/multiprocessing/managers.py
- Timestamp:
- Mar 19, 2014, 11:31:01 PM (11 years ago)
- Location:
- python/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
python/trunk
-
Property svn:mergeinfo
set to
/python/vendor/Python-2.7.6 merged eligible /python/vendor/current merged eligible
-
Property svn:mergeinfo
set to
-
python/trunk/Lib/multiprocessing/managers.py
r2 r391 5 5 # multiprocessing/managers.py 6 6 # 7 # Copyright (c) 2006-2008, R Oudkerk --- see COPYING.txt 7 # Copyright (c) 2006-2008, R Oudkerk 8 # All rights reserved. 9 # 10 # Redistribution and use in source and binary forms, with or without 11 # modification, are permitted provided that the following conditions 12 # are met: 13 # 14 # 1. Redistributions of source code must retain the above copyright 15 # notice, this list of conditions and the following disclaimer. 16 # 2. Redistributions in binary form must reproduce the above copyright 17 # notice, this list of conditions and the following disclaimer in the 18 # documentation and/or other materials provided with the distribution. 19 # 3. Neither the name of author nor the names of any contributors may be 20 # used to endorse or promote products derived from this software 21 # without specific prior written permission. 22 # 23 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND 24 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 25 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 26 # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 27 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33 # SUCH DAMAGE. 8 34 # 9 35 … … 134 160 135 161 # do authentication later 136 self.listener = Listener(address=address, backlog= 5)162 self.listener = Listener(address=address, backlog=16) 137 163 self.address = self.listener.address 138 164 139 self.id_to_obj = { 0: (None, ())}165 self.id_to_obj = {'0': (None, ())} 140 166 self.id_to_refcount = {} 141 167 self.mutex = threading.RLock() … … 299 325 keys.sort() 300 326 for ident in keys: 301 if ident != 0:327 if ident != '0': 302 328 result.append(' %s: refcount=%s\n %s' % 303 329 (ident, self.id_to_refcount[ident], … … 311 337 Number of shared objects 312 338 ''' 313 return len(self.id_to_obj) - 1 # don't count ident= 0339 return len(self.id_to_obj) - 1 # don't count ident='0' 314 340 315 341 def shutdown(self, c): … … 476 502 self._state.value = State.STARTED 477 503 478 def start(self ):504 def start(self, initializer=None, initargs=()): 479 505 ''' 480 506 Spawn a server process for this manager object 481 507 ''' 482 508 assert self._state.value == State.INITIAL 509 510 if initializer is not None and not hasattr(initializer, '__call__'): 511 raise TypeError('initializer must be a callable') 483 512 484 513 # pipe over which we will retrieve address of server … … 489 518 target=type(self)._run_server, 490 519 args=(self._registry, self._address, self._authkey, 491 self._serializer, writer ),520 self._serializer, writer, initializer, initargs), 492 521 ) 493 522 ident = ':'.join(str(i) for i in self._process._identity) … … 510 539 511 540 @classmethod 512 def _run_server(cls, registry, address, authkey, serializer, writer): 541 def _run_server(cls, registry, address, authkey, serializer, writer, 542 initializer=None, initargs=()): 513 543 ''' 514 544 Create a server, report its address and run it 515 545 ''' 546 if initializer is not None: 547 initializer(*initargs) 548 516 549 # create server 517 550 server = cls._Server(registry, address, authkey, serializer) … … 731 764 exposed, token = result 732 765 proxytype = self._manager._registry[token.typeid][-1] 766 token.address = self._token.address 733 767 proxy = proxytype( 734 768 token, self._serializer, manager=self._manager,
Note:
See TracChangeset
for help on using the changeset viewer.