mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	issue3352: clean up the multiprocessing API to remove many get_/set_ methods and convert them to properties. Update the docs and the examples included.
This commit is contained in:
		
							parent
							
								
									7c972f971c
								
							
						
					
					
						commit
						5bc9f4c09c
					
				
					 15 changed files with 81 additions and 87 deletions
				
			
		|  | @ -152,7 +152,7 @@ def _help_stuff_finish(inqueue, task_handler, size): | ||||||
| 
 | 
 | ||||||
| def LocalProcess(**kwds): | def LocalProcess(**kwds): | ||||||
|     p = Process(**kwds) |     p = Process(**kwds) | ||||||
|     p.set_name('localhost/' + p.get_name()) |     p.set_name('localhost/' + p.name) | ||||||
|     return p |     return p | ||||||
| 
 | 
 | ||||||
| class Cluster(managers.SyncManager): | class Cluster(managers.SyncManager): | ||||||
|  |  | ||||||
|  | @ -14,7 +14,7 @@ | ||||||
| def calculate(func, args): | def calculate(func, args): | ||||||
|     result = func(*args) |     result = func(*args) | ||||||
|     return '%s says that %s%s = %s' % ( |     return '%s says that %s%s = %s' % ( | ||||||
|         multiprocessing.current_process().get_name(), |         multiprocessing.current_process().name, | ||||||
|         func.__name__, args, result |         func.__name__, args, result | ||||||
|         ) |         ) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -224,7 +224,7 @@ def test_sharedvalues(): | ||||||
|     p.start() |     p.start() | ||||||
|     p.join() |     p.join() | ||||||
| 
 | 
 | ||||||
|     assert p.get_exitcode() == 0 |     assert p.exitcode == 0 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| #### | #### | ||||||
|  |  | ||||||
|  | @ -21,7 +21,7 @@ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def note(format, *args): | def note(format, *args): | ||||||
|     sys.stderr.write('[%s]\t%s\n' % (current_process().get_name(),format%args)) |     sys.stderr.write('[%s]\t%s\n' % (current_process().name, format%args)) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class RequestHandler(SimpleHTTPRequestHandler): | class RequestHandler(SimpleHTTPRequestHandler): | ||||||
|  |  | ||||||
|  | @ -29,7 +29,7 @@ def worker(input, output): | ||||||
| def calculate(func, args): | def calculate(func, args): | ||||||
|     result = func(*args) |     result = func(*args) | ||||||
|     return '%s says that %s%s = %s' % \ |     return '%s says that %s%s = %s' % \ | ||||||
|         (current_process().get_name(), func.__name__, args, result) |         (current_process().name, func.__name__, args, result) | ||||||
| 
 | 
 | ||||||
| # | # | ||||||
| # Functions referenced by tasks | # Functions referenced by tasks | ||||||
|  |  | ||||||
|  | @ -292,11 +292,11 @@ The :mod:`multiprocessing` package mostly replicates the API of the | ||||||
|       A process cannot join itself because this would cause a deadlock.  It is |       A process cannot join itself because this would cause a deadlock.  It is | ||||||
|       an error to attempt to join a process before it has been started. |       an error to attempt to join a process before it has been started. | ||||||
| 
 | 
 | ||||||
|    .. method:: get_name() |    .. attribute:: Process.name | ||||||
| 
 | 
 | ||||||
|       Return the process's name. |       Return the process's name. | ||||||
| 
 | 
 | ||||||
|    .. method:: set_name(name) |    .. attribute:: Process.name = name | ||||||
| 
 | 
 | ||||||
|       Set the process's name. |       Set the process's name. | ||||||
| 
 | 
 | ||||||
|  | @ -311,11 +311,11 @@ The :mod:`multiprocessing` package mostly replicates the API of the | ||||||
|       Roughly, a process object is alive from the moment the :meth:`start` |       Roughly, a process object is alive from the moment the :meth:`start` | ||||||
|       method returns until the child process terminates. |       method returns until the child process terminates. | ||||||
| 
 | 
 | ||||||
|    .. method:: is_daemon() |    .. attribute:: Process.daemon | ||||||
| 
 | 
 | ||||||
|       Return the process's daemon flag. |       Return the process's daemon flag., this is a boolean. | ||||||
| 
 | 
 | ||||||
|    .. method:: set_daemon(daemonic) |    .. attribute:: Process.daemon = daemonic | ||||||
| 
 | 
 | ||||||
|       Set the process's daemon flag to the Boolean value *daemonic*.  This must |       Set the process's daemon flag to the Boolean value *daemonic*.  This must | ||||||
|       be called before :meth:`start` is called. |       be called before :meth:`start` is called. | ||||||
|  | @ -331,18 +331,18 @@ The :mod:`multiprocessing` package mostly replicates the API of the | ||||||
| 
 | 
 | ||||||
|    In addition process objects also support the following methods: |    In addition process objects also support the following methods: | ||||||
| 
 | 
 | ||||||
|    .. method:: get_pid() |    .. attribute:: Process.pid | ||||||
| 
 | 
 | ||||||
|       Return the process ID.  Before the process is spawned, this will be |       Return the process ID.  Before the process is spawned, this will be | ||||||
|       ``None``. |       ``None``. | ||||||
| 
 | 
 | ||||||
|    .. method:: get_exit_code() |    .. attribute:: Process.exitcode | ||||||
| 
 | 
 | ||||||
|       Return the child's exit code.  This will be ``None`` if the process has |       Return the child's exit code.  This will be ``None`` if the process has | ||||||
|       not yet terminated.  A negative value *-N* indicates that the child was |       not yet terminated.  A negative value *-N* indicates that the child was | ||||||
|       terminated by signal *N*. |       terminated by signal *N*. | ||||||
| 
 | 
 | ||||||
|    .. method:: get_auth_key() |    .. attribute:: Process.authkey | ||||||
| 
 | 
 | ||||||
|       Return the process's authentication key (a byte string). |       Return the process's authentication key (a byte string). | ||||||
| 
 | 
 | ||||||
|  | @ -351,11 +351,11 @@ The :mod:`multiprocessing` package mostly replicates the API of the | ||||||
| 
 | 
 | ||||||
|       When a :class:`Process` object is created, it will inherit the |       When a :class:`Process` object is created, it will inherit the | ||||||
|       authentication key of its parent process, although this may be changed |       authentication key of its parent process, although this may be changed | ||||||
|       using :meth:`set_auth_key` below. |       using :attr:`Process.authkey` below. | ||||||
| 
 | 
 | ||||||
|       See :ref:`multiprocessing-auth-keys`. |       See :ref:`multiprocessing-auth-keys`. | ||||||
| 
 | 
 | ||||||
|    .. method:: set_auth_key(authkey) |    .. attribute:: Process.authkey = authkey | ||||||
| 
 | 
 | ||||||
|       Set the process's authentication key which must be a byte string. |       Set the process's authentication key which must be a byte string. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -47,7 +47,8 @@ def start(self): | ||||||
|         self._parent._children[self] = None |         self._parent._children[self] = None | ||||||
|         threading.Thread.start(self) |         threading.Thread.start(self) | ||||||
| 
 | 
 | ||||||
|     def get_exitcode(self): |     @property | ||||||
|  |     def exitcode(self): | ||||||
|         if self._start_called and not self.is_alive(): |         if self._start_called and not self.is_alive(): | ||||||
|             return 0 |             return 0 | ||||||
|         else: |         else: | ||||||
|  |  | ||||||
|  | @ -360,7 +360,7 @@ def get_preparation_data(name): | ||||||
|             sys_argv=sys.argv, |             sys_argv=sys.argv, | ||||||
|             log_to_stderr=_log_to_stderr, |             log_to_stderr=_log_to_stderr, | ||||||
|             orig_dir=process.ORIGINAL_DIR, |             orig_dir=process.ORIGINAL_DIR, | ||||||
|             authkey=process.current_process().get_authkey(), |             authkey=process.current_process().authkey, | ||||||
|             ) |             ) | ||||||
| 
 | 
 | ||||||
|         if _logger is not None: |         if _logger is not None: | ||||||
|  | @ -407,7 +407,7 @@ def prepare(data): | ||||||
|     old_main_modules.append(sys.modules['__main__']) |     old_main_modules.append(sys.modules['__main__']) | ||||||
| 
 | 
 | ||||||
|     if 'name' in data: |     if 'name' in data: | ||||||
|         process.current_process().set_name(data['name']) |         process.current_process().name = data['name'] | ||||||
| 
 | 
 | ||||||
|     if 'authkey' in data: |     if 'authkey' in data: | ||||||
|         process.current_process()._authkey = data['authkey'] |         process.current_process()._authkey = data['authkey'] | ||||||
|  |  | ||||||
|  | @ -444,7 +444,7 @@ class BaseManager(object): | ||||||
| 
 | 
 | ||||||
|     def __init__(self, address=None, authkey=None, serializer='pickle'): |     def __init__(self, address=None, authkey=None, serializer='pickle'): | ||||||
|         if authkey is None: |         if authkey is None: | ||||||
|             authkey = current_process().get_authkey() |             authkey = current_process().authkey | ||||||
|         self._address = address     # XXX not final address if eg ('', 0) |         self._address = address     # XXX not final address if eg ('', 0) | ||||||
|         self._authkey = AuthenticationString(authkey) |         self._authkey = AuthenticationString(authkey) | ||||||
|         self._state = State() |         self._state = State() | ||||||
|  | @ -489,7 +489,7 @@ def start(self): | ||||||
|                   self._serializer, writer), |                   self._serializer, writer), | ||||||
|             ) |             ) | ||||||
|         ident = ':'.join(str(i) for i in self._process._identity) |         ident = ':'.join(str(i) for i in self._process._identity) | ||||||
|         self._process.set_name(type(self).__name__  + '-' + ident) |         self._process.name = type(self).__name__  + '-' + ident | ||||||
|         self._process.start() |         self._process.start() | ||||||
| 
 | 
 | ||||||
|         # get address of server |         # get address of server | ||||||
|  | @ -690,7 +690,7 @@ def __init__(self, token, serializer, manager=None, | ||||||
|         elif self._manager is not None: |         elif self._manager is not None: | ||||||
|             self._authkey = self._manager._authkey |             self._authkey = self._manager._authkey | ||||||
|         else: |         else: | ||||||
|             self._authkey = current_process().get_authkey() |             self._authkey = current_process().authkey | ||||||
| 
 | 
 | ||||||
|         if incref: |         if incref: | ||||||
|             self._incref() |             self._incref() | ||||||
|  | @ -699,7 +699,7 @@ def __init__(self, token, serializer, manager=None, | ||||||
| 
 | 
 | ||||||
|     def _connect(self): |     def _connect(self): | ||||||
|         util.debug('making connection to manager') |         util.debug('making connection to manager') | ||||||
|         name = current_process().get_name() |         name = current_process().name | ||||||
|         if threading.current_thread().name != 'MainThread': |         if threading.current_thread().name != 'MainThread': | ||||||
|             name += '|' + threading.current_thread().name |             name += '|' + threading.current_thread().name | ||||||
|         conn = self._Client(self._token.address, authkey=self._authkey) |         conn = self._Client(self._token.address, authkey=self._authkey) | ||||||
|  | @ -880,7 +880,7 @@ def AutoProxy(token, serializer, manager=None, authkey=None, | ||||||
|     if authkey is None and manager is not None: |     if authkey is None and manager is not None: | ||||||
|         authkey = manager._authkey |         authkey = manager._authkey | ||||||
|     if authkey is None: |     if authkey is None: | ||||||
|         authkey = current_process().get_authkey() |         authkey = current_process().authkey | ||||||
| 
 | 
 | ||||||
|     ProxyType = MakeProxyType('AutoProxy[%s]' % token.typeid, exposed) |     ProxyType = MakeProxyType('AutoProxy[%s]' % token.typeid, exposed) | ||||||
|     proxy = ProxyType(token, serializer, manager=manager, authkey=authkey, |     proxy = ProxyType(token, serializer, manager=manager, authkey=authkey, | ||||||
|  |  | ||||||
|  | @ -99,7 +99,7 @@ def __init__(self, processes=None, initializer=None, initargs=()): | ||||||
|                 args=(self._inqueue, self._outqueue, initializer, initargs) |                 args=(self._inqueue, self._outqueue, initializer, initargs) | ||||||
|                 ) |                 ) | ||||||
|             self._pool.append(w) |             self._pool.append(w) | ||||||
|             w.name = w.get_name().replace('Process', 'PoolWorker') |             w.name = w.name.replace('Process', 'PoolWorker') | ||||||
|             w.daemon = True |             w.daemon = True | ||||||
|             w.start() |             w.start() | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -132,45 +132,43 @@ def is_alive(self): | ||||||
|         self._popen.poll() |         self._popen.poll() | ||||||
|         return self._popen.returncode is None |         return self._popen.returncode is None | ||||||
| 
 | 
 | ||||||
|     def get_name(self): |     @property | ||||||
|         ''' |     def name(self): | ||||||
|         Return name of process |  | ||||||
|         ''' |  | ||||||
|         return self._name |         return self._name | ||||||
| 
 | 
 | ||||||
|     def set_name(self, name): |     @name.setter | ||||||
|         ''' |     def name(self, name): | ||||||
|         Set name of process |  | ||||||
|         ''' |  | ||||||
|         assert isinstance(name, str), 'name must be a string' |         assert isinstance(name, str), 'name must be a string' | ||||||
|         self._name = name |         self._name = name | ||||||
| 
 | 
 | ||||||
|     def is_daemon(self): |     @property | ||||||
|  |     def daemon(self): | ||||||
|         ''' |         ''' | ||||||
|         Return whether process is a daemon |         Return whether process is a daemon | ||||||
|         ''' |         ''' | ||||||
|         return self._daemonic |         return self._daemonic | ||||||
| 
 | 
 | ||||||
|     def set_daemon(self, daemonic): |     @daemon.setter | ||||||
|  |     def daemon(self, daemonic): | ||||||
|         ''' |         ''' | ||||||
|         Set whether process is a daemon |         Set whether process is a daemon | ||||||
|         ''' |         ''' | ||||||
|         assert self._popen is None, 'process has already started' |         assert self._popen is None, 'process has already started' | ||||||
|         self._daemonic = daemonic |         self._daemonic = daemonic | ||||||
| 
 | 
 | ||||||
|     def get_authkey(self): |     @property | ||||||
|         ''' |     def authkey(self): | ||||||
|         Return authorization key of process |  | ||||||
|         ''' |  | ||||||
|         return self._authkey |         return self._authkey | ||||||
| 
 | 
 | ||||||
|     def set_authkey(self, authkey): |     @authkey.setter | ||||||
|  |     def authkey(self, authkey): | ||||||
|         ''' |         ''' | ||||||
|         Set authorization key of process |         Set authorization key of process | ||||||
|         ''' |         ''' | ||||||
|         self._authkey = AuthenticationString(authkey) |         self._authkey = AuthenticationString(authkey) | ||||||
| 
 | 
 | ||||||
|     def get_exitcode(self): |     @property | ||||||
|  |     def exitcode(self): | ||||||
|         ''' |         ''' | ||||||
|         Return exit code of process or `None` if it has yet to stop |         Return exit code of process or `None` if it has yet to stop | ||||||
|         ''' |         ''' | ||||||
|  | @ -178,7 +176,8 @@ def get_exitcode(self): | ||||||
|             return self._popen |             return self._popen | ||||||
|         return self._popen.poll() |         return self._popen.poll() | ||||||
| 
 | 
 | ||||||
|     def get_ident(self): |     @property | ||||||
|  |     def ident(self): | ||||||
|         ''' |         ''' | ||||||
|         Return indentifier (PID) of process or `None` if it has yet to start |         Return indentifier (PID) of process or `None` if it has yet to start | ||||||
|         ''' |         ''' | ||||||
|  | @ -187,7 +186,7 @@ def get_ident(self): | ||||||
|         else: |         else: | ||||||
|             return self._popen and self._popen.pid |             return self._popen and self._popen.pid | ||||||
| 
 | 
 | ||||||
|     pid = property(get_ident) |     pid = ident | ||||||
| 
 | 
 | ||||||
|     def __repr__(self): |     def __repr__(self): | ||||||
|         if self is _current_process: |         if self is _current_process: | ||||||
|  | @ -198,7 +197,7 @@ def __repr__(self): | ||||||
|             status = 'initial' |             status = 'initial' | ||||||
|         else: |         else: | ||||||
|             if self._popen.poll() is not None: |             if self._popen.poll() is not None: | ||||||
|                 status = self.get_exitcode() |                 status = self.exitcode | ||||||
|             else: |             else: | ||||||
|                 status = 'started' |                 status = 'started' | ||||||
| 
 | 
 | ||||||
|  | @ -245,7 +244,7 @@ def _bootstrap(self): | ||||||
|         except: |         except: | ||||||
|             exitcode = 1 |             exitcode = 1 | ||||||
|             import traceback |             import traceback | ||||||
|             sys.stderr.write('Process %s:\n' % self.get_name()) |             sys.stderr.write('Process %s:\n' % self.name) | ||||||
|             sys.stderr.flush() |             sys.stderr.flush() | ||||||
|             traceback.print_exc() |             traceback.print_exc() | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -81,9 +81,9 @@ def _get_listener(): | ||||||
|         try: |         try: | ||||||
|             if _listener is None: |             if _listener is None: | ||||||
|                 debug('starting listener and thread for sending handles') |                 debug('starting listener and thread for sending handles') | ||||||
|                 _listener = Listener(authkey=current_process().get_authkey()) |                 _listener = Listener(authkey=current_process().authkey) | ||||||
|                 t = threading.Thread(target=_serve) |                 t = threading.Thread(target=_serve) | ||||||
|                 t.set_daemon(True) |                 t.daemon = True | ||||||
|                 t.start() |                 t.start() | ||||||
|         finally: |         finally: | ||||||
|             _lock.release() |             _lock.release() | ||||||
|  | @ -126,7 +126,7 @@ def rebuild_handle(pickled_data): | ||||||
|     if inherited: |     if inherited: | ||||||
|         return handle |         return handle | ||||||
|     sub_debug('rebuilding handle %d', handle) |     sub_debug('rebuilding handle %d', handle) | ||||||
|     conn = Client(address, authkey=current_process().get_authkey()) |     conn = Client(address, authkey=current_process().authkey) | ||||||
|     conn.send((handle, os.getpid())) |     conn.send((handle, os.getpid())) | ||||||
|     new_handle = recv_handle(conn) |     new_handle = recv_handle(conn) | ||||||
|     conn.close() |     conn.close() | ||||||
|  |  | ||||||
|  | @ -108,9 +108,9 @@ def __init__(self): | ||||||
|     def __repr__(self): |     def __repr__(self): | ||||||
|         try: |         try: | ||||||
|             if self._semlock._is_mine(): |             if self._semlock._is_mine(): | ||||||
|                 name = current_process().get_name() |                 name = current_process().name | ||||||
|                 if threading.current_thread().get_name() != 'MainThread': |                 if threading.current_thread().name != 'MainThread': | ||||||
|                     name += '|' + threading.current_thread().get_name() |                     name += '|' + threading.current_thread().name | ||||||
|             elif self._semlock._get_value() == 1: |             elif self._semlock._get_value() == 1: | ||||||
|                 name = 'None' |                 name = 'None' | ||||||
|             elif self._semlock._count() > 0: |             elif self._semlock._count() > 0: | ||||||
|  | @ -133,9 +133,9 @@ def __init__(self): | ||||||
|     def __repr__(self): |     def __repr__(self): | ||||||
|         try: |         try: | ||||||
|             if self._semlock._is_mine(): |             if self._semlock._is_mine(): | ||||||
|                 name = current_process().get_name() |                 name = current_process().name | ||||||
|                 if threading.current_thread().get_name() != 'MainThread': |                 if threading.current_thread().name != 'MainThread': | ||||||
|                     name += '|' + threading.current_thread().get_name() |                     name += '|' + threading.current_thread().name | ||||||
|                 count = self._semlock._count() |                 count = self._semlock._count() | ||||||
|             elif self._semlock._get_value() == 1: |             elif self._semlock._get_value() == 1: | ||||||
|                 name, count = 'None', 0 |                 name, count = 'None', 0 | ||||||
|  |  | ||||||
|  | @ -273,11 +273,11 @@ def _exit_function(): | ||||||
| 
 | 
 | ||||||
|     for p in active_children(): |     for p in active_children(): | ||||||
|         if p._daemonic: |         if p._daemonic: | ||||||
|             info('calling terminate() for daemon %s', p.get_name()) |             info('calling terminate() for daemon %s', p.name) | ||||||
|             p._popen.terminate() |             p._popen.terminate() | ||||||
| 
 | 
 | ||||||
|     for p in active_children(): |     for p in active_children(): | ||||||
|         info('calling join() for process %s', p.get_name()) |         info('calling join() for process %s', p.name) | ||||||
|         p.join() |         p.join() | ||||||
| 
 | 
 | ||||||
|     debug('running the remaining "atexit" finalizers') |     debug('running the remaining "atexit" finalizers') | ||||||
|  |  | ||||||
|  | @ -119,22 +119,22 @@ def test_current(self): | ||||||
|             return |             return | ||||||
| 
 | 
 | ||||||
|         current = self.current_process() |         current = self.current_process() | ||||||
|         authkey = current.get_authkey() |         authkey = current.authkey | ||||||
| 
 | 
 | ||||||
|         self.assertTrue(current.is_alive()) |         self.assertTrue(current.is_alive()) | ||||||
|         self.assertTrue(not current.is_daemon()) |         self.assertTrue(not current.daemon) | ||||||
|         self.assertTrue(isinstance(authkey, bytes)) |         self.assertTrue(isinstance(authkey, bytes)) | ||||||
|         self.assertTrue(len(authkey) > 0) |         self.assertTrue(len(authkey) > 0) | ||||||
|         self.assertEqual(current.get_ident(), os.getpid()) |         self.assertEqual(current.ident, os.getpid()) | ||||||
|         self.assertEqual(current.get_exitcode(), None) |         self.assertEqual(current.exitcode, None) | ||||||
| 
 | 
 | ||||||
|     def _test(self, q, *args, **kwds): |     def _test(self, q, *args, **kwds): | ||||||
|         current = self.current_process() |         current = self.current_process() | ||||||
|         q.put(args) |         q.put(args) | ||||||
|         q.put(kwds) |         q.put(kwds) | ||||||
|         q.put(current.get_name()) |         q.put(current.name) | ||||||
|         if self.TYPE != 'threads': |         if self.TYPE != 'threads': | ||||||
|             q.put(bytes(current.get_authkey())) |             q.put(bytes(current.authkey)) | ||||||
|             q.put(current.pid) |             q.put(current.pid) | ||||||
| 
 | 
 | ||||||
|     def test_process(self): |     def test_process(self): | ||||||
|  | @ -146,33 +146,33 @@ def test_process(self): | ||||||
|         p = self.Process( |         p = self.Process( | ||||||
|             target=self._test, args=args, kwargs=kwargs, name=name |             target=self._test, args=args, kwargs=kwargs, name=name | ||||||
|             ) |             ) | ||||||
|         p.set_daemon(True) |         p.daemon = True | ||||||
|         current = self.current_process() |         current = self.current_process() | ||||||
| 
 | 
 | ||||||
|         if self.TYPE != 'threads': |         if self.TYPE != 'threads': | ||||||
|             self.assertEquals(p.get_authkey(), current.get_authkey()) |             self.assertEquals(p.authkey, current.authkey) | ||||||
|         self.assertEquals(p.is_alive(), False) |         self.assertEquals(p.is_alive(), False) | ||||||
|         self.assertEquals(p.is_daemon(), True) |         self.assertEquals(p.daemon, True) | ||||||
|         self.assertTrue(p not in self.active_children()) |         self.assertTrue(p not in self.active_children()) | ||||||
|         self.assertTrue(type(self.active_children()) is list) |         self.assertTrue(type(self.active_children()) is list) | ||||||
|         self.assertEqual(p.get_exitcode(), None) |         self.assertEqual(p.exitcode, None) | ||||||
| 
 | 
 | ||||||
|         p.start() |         p.start() | ||||||
| 
 | 
 | ||||||
|         self.assertEquals(p.get_exitcode(), None) |         self.assertEquals(p.exitcode, None) | ||||||
|         self.assertEquals(p.is_alive(), True) |         self.assertEquals(p.is_alive(), True) | ||||||
|         self.assertTrue(p in self.active_children()) |         self.assertTrue(p in self.active_children()) | ||||||
| 
 | 
 | ||||||
|         self.assertEquals(q.get(), args[1:]) |         self.assertEquals(q.get(), args[1:]) | ||||||
|         self.assertEquals(q.get(), kwargs) |         self.assertEquals(q.get(), kwargs) | ||||||
|         self.assertEquals(q.get(), p.get_name()) |         self.assertEquals(q.get(), p.name) | ||||||
|         if self.TYPE != 'threads': |         if self.TYPE != 'threads': | ||||||
|             self.assertEquals(q.get(), current.get_authkey()) |             self.assertEquals(q.get(), current.authkey) | ||||||
|             self.assertEquals(q.get(), p.pid) |             self.assertEquals(q.get(), p.pid) | ||||||
| 
 | 
 | ||||||
|         p.join() |         p.join() | ||||||
| 
 | 
 | ||||||
|         self.assertEquals(p.get_exitcode(), 0) |         self.assertEquals(p.exitcode, 0) | ||||||
|         self.assertEquals(p.is_alive(), False) |         self.assertEquals(p.is_alive(), False) | ||||||
|         self.assertTrue(p not in self.active_children()) |         self.assertTrue(p not in self.active_children()) | ||||||
| 
 | 
 | ||||||
|  | @ -184,12 +184,12 @@ def test_terminate(self): | ||||||
|             return |             return | ||||||
| 
 | 
 | ||||||
|         p = self.Process(target=self._test_terminate) |         p = self.Process(target=self._test_terminate) | ||||||
|         p.set_daemon(True) |         p.daemon = True | ||||||
|         p.start() |         p.start() | ||||||
| 
 | 
 | ||||||
|         self.assertEqual(p.is_alive(), True) |         self.assertEqual(p.is_alive(), True) | ||||||
|         self.assertTrue(p in self.active_children()) |         self.assertTrue(p in self.active_children()) | ||||||
|         self.assertEqual(p.get_exitcode(), None) |         self.assertEqual(p.exitcode, None) | ||||||
| 
 | 
 | ||||||
|         p.terminate() |         p.terminate() | ||||||
| 
 | 
 | ||||||
|  | @ -202,8 +202,8 @@ def test_terminate(self): | ||||||
| 
 | 
 | ||||||
|         p.join() |         p.join() | ||||||
| 
 | 
 | ||||||
|         # XXX sometimes get p.get_exitcode() == 0 on Windows ... |         # XXX sometimes get p.exitcode == 0 on Windows ... | ||||||
|         #self.assertEqual(p.get_exitcode(), -signal.SIGTERM) |         #self.assertEqual(p.exitcode, -signal.SIGTERM) | ||||||
| 
 | 
 | ||||||
|     def test_cpu_count(self): |     def test_cpu_count(self): | ||||||
|         try: |         try: | ||||||
|  | @ -330,7 +330,7 @@ def test_put(self): | ||||||
|             target=self._test_put, |             target=self._test_put, | ||||||
|             args=(queue, child_can_start, parent_can_continue) |             args=(queue, child_can_start, parent_can_continue) | ||||||
|             ) |             ) | ||||||
|         proc.set_daemon(True) |         proc.daemon = True | ||||||
|         proc.start() |         proc.start() | ||||||
| 
 | 
 | ||||||
|         self.assertEqual(queue_empty(queue), True) |         self.assertEqual(queue_empty(queue), True) | ||||||
|  | @ -396,7 +396,7 @@ def test_get(self): | ||||||
|             target=self._test_get, |             target=self._test_get, | ||||||
|             args=(queue, child_can_start, parent_can_continue) |             args=(queue, child_can_start, parent_can_continue) | ||||||
|             ) |             ) | ||||||
|         proc.set_daemon(True) |         proc.daemon = True | ||||||
|         proc.start() |         proc.start() | ||||||
| 
 | 
 | ||||||
|         self.assertEqual(queue_empty(queue), True) |         self.assertEqual(queue_empty(queue), True) | ||||||
|  | @ -619,16 +619,10 @@ def test_notify(self): | ||||||
|         woken = self.Semaphore(0) |         woken = self.Semaphore(0) | ||||||
| 
 | 
 | ||||||
|         p = self.Process(target=self.f, args=(cond, sleeping, woken)) |         p = self.Process(target=self.f, args=(cond, sleeping, woken)) | ||||||
|         try: |  | ||||||
|             p.set_daemon(True) |  | ||||||
|         except AttributeError: |  | ||||||
|         p.daemon = True |         p.daemon = True | ||||||
|         p.start() |         p.start() | ||||||
| 
 | 
 | ||||||
|         p = threading.Thread(target=self.f, args=(cond, sleeping, woken)) |         p = threading.Thread(target=self.f, args=(cond, sleeping, woken)) | ||||||
|         try: |  | ||||||
|             p.set_daemon(True) |  | ||||||
|         except AttributeError: |  | ||||||
|         p.daemon = True |         p.daemon = True | ||||||
|         p.start() |         p.start() | ||||||
| 
 | 
 | ||||||
|  | @ -671,7 +665,7 @@ def test_notify_all(self): | ||||||
|         for i in range(3): |         for i in range(3): | ||||||
|             p = self.Process(target=self.f, |             p = self.Process(target=self.f, | ||||||
|                              args=(cond, sleeping, woken, TIMEOUT1)) |                              args=(cond, sleeping, woken, TIMEOUT1)) | ||||||
|             p.set_daemon(True) |             p.daemon = True | ||||||
|             p.start() |             p.start() | ||||||
| 
 | 
 | ||||||
|             t = threading.Thread(target=self.f, |             t = threading.Thread(target=self.f, | ||||||
|  | @ -694,7 +688,7 @@ def test_notify_all(self): | ||||||
|         # start some more threads/processes |         # start some more threads/processes | ||||||
|         for i in range(3): |         for i in range(3): | ||||||
|             p = self.Process(target=self.f, args=(cond, sleeping, woken)) |             p = self.Process(target=self.f, args=(cond, sleeping, woken)) | ||||||
|             p.set_daemon(True) |             p.daemon = True | ||||||
|             p.start() |             p.start() | ||||||
| 
 | 
 | ||||||
|             t = threading.Thread(target=self.f, args=(cond, sleeping, woken)) |             t = threading.Thread(target=self.f, args=(cond, sleeping, woken)) | ||||||
|  | @ -1191,7 +1185,7 @@ def test_connection(self): | ||||||
|         conn, child_conn = self.Pipe() |         conn, child_conn = self.Pipe() | ||||||
| 
 | 
 | ||||||
|         p = self.Process(target=self._echo, args=(child_conn,)) |         p = self.Process(target=self._echo, args=(child_conn,)) | ||||||
|         p.set_daemon(True) |         p.daemon = True | ||||||
|         p.start() |         p.start() | ||||||
| 
 | 
 | ||||||
|         seq = [1, 2.25, None] |         seq = [1, 2.25, None] | ||||||
|  | @ -1340,7 +1334,7 @@ def test_listener_client(self): | ||||||
|         for family in self.connection.families: |         for family in self.connection.families: | ||||||
|             l = self.connection.Listener(family=family) |             l = self.connection.Listener(family=family) | ||||||
|             p = self.Process(target=self._test, args=(l.address,)) |             p = self.Process(target=self._test, args=(l.address,)) | ||||||
|             p.set_daemon(True) |             p.daemon = True | ||||||
|             p.start() |             p.start() | ||||||
|             conn = l.accept() |             conn = l.accept() | ||||||
|             self.assertEqual(conn.recv(), 'hello') |             self.assertEqual(conn.recv(), 'hello') | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Jesse Noller
						Jesse Noller