mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	bpo-30886: Fix multiprocessing.Queue.join_thread() (#2642)
multiprocessing.Queue.join_thread() now waits until the thread completes, even if the thread was started by the same process which created the queue. Fix the following warning which occurs randomly when running test_handle_called_with_mp_queue of test_logging.QueueListenerTest: Warning -- threading_cleanup() failed to cleanup -1 threads after 4 sec (count: 0, dangling: 1)
This commit is contained in:
		
							parent
							
								
									7e60192fe0
								
							
						
					
					
						commit
						3b69d911c5
					
				
					 2 changed files with 4 additions and 8 deletions
				
			
		| 
						 | 
				
			
			@ -169,14 +169,7 @@ def _start_thread(self):
 | 
			
		|||
        self._thread.start()
 | 
			
		||||
        debug('... done self._thread.start()')
 | 
			
		||||
 | 
			
		||||
        # On process exit we will wait for data to be flushed to pipe.
 | 
			
		||||
        #
 | 
			
		||||
        # However, if this process created the queue then all
 | 
			
		||||
        # processes which use the queue will be descendants of this
 | 
			
		||||
        # process.  Therefore waiting for the queue to be flushed
 | 
			
		||||
        # is pointless once all the child processes have been joined.
 | 
			
		||||
        created_by_this_process = (self._opid == os.getpid())
 | 
			
		||||
        if not self._joincancelled and not created_by_this_process:
 | 
			
		||||
        if not self._joincancelled:
 | 
			
		||||
            self._jointhread = Finalize(
 | 
			
		||||
                self._thread, Queue._finalize_join,
 | 
			
		||||
                [weakref.ref(self._thread)],
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,3 @@
 | 
			
		|||
Fix multiprocessing.Queue.join_thread(): it now waits until the thread
 | 
			
		||||
completes, even if the thread was started by the same process which created
 | 
			
		||||
the queue.
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue