Ignore:
Timestamp:
Mar 19, 2014, 11:31:01 PM (11 years ago)
Author:
dmik
Message:

python: Merge vendor 2.7.6 to trunk.

Location:
python/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • python/trunk

  • python/trunk/Lib/multiprocessing/managers.py

    r2 r391  
    55# multiprocessing/managers.py
    66#
    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.
    834#
    935
     
    134160
    135161        # do authentication later
    136         self.listener = Listener(address=address, backlog=5)
     162        self.listener = Listener(address=address, backlog=16)
    137163        self.address = self.listener.address
    138164
    139         self.id_to_obj = {0: (None, ())}
     165        self.id_to_obj = {'0': (None, ())}
    140166        self.id_to_refcount = {}
    141167        self.mutex = threading.RLock()
     
    299325            keys.sort()
    300326            for ident in keys:
    301                 if ident != 0:
     327                if ident != '0':
    302328                    result.append('  %s:       refcount=%s\n    %s' %
    303329                                  (ident, self.id_to_refcount[ident],
     
    311337        Number of shared objects
    312338        '''
    313         return len(self.id_to_obj) - 1      # don't count ident=0
     339        return len(self.id_to_obj) - 1      # don't count ident='0'
    314340
    315341    def shutdown(self, c):
     
    476502        self._state.value = State.STARTED
    477503
    478     def start(self):
     504    def start(self, initializer=None, initargs=()):
    479505        '''
    480506        Spawn a server process for this manager object
    481507        '''
    482508        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')
    483512
    484513        # pipe over which we will retrieve address of server
     
    489518            target=type(self)._run_server,
    490519            args=(self._registry, self._address, self._authkey,
    491                   self._serializer, writer),
     520                  self._serializer, writer, initializer, initargs),
    492521            )
    493522        ident = ':'.join(str(i) for i in self._process._identity)
     
    510539
    511540    @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=()):
    513543        '''
    514544        Create a server, report its address and run it
    515545        '''
     546        if initializer is not None:
     547            initializer(*initargs)
     548
    516549        # create server
    517550        server = cls._Server(registry, address, authkey, serializer)
     
    731764            exposed, token = result
    732765            proxytype = self._manager._registry[token.typeid][-1]
     766            token.address = self._token.address
    733767            proxy = proxytype(
    734768                token, self._serializer, manager=self._manager,
Note: See TracChangeset for help on using the changeset viewer.