mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +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)], | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Victor Stinner
						Victor Stinner