• Victor Stinner's avatar
    [3.6] bpo-26762, bpo-31019: Backport multiprocessing fixes from master to 3.6 (#2879) · d0adfb25
    Victor Stinner yazdı
    * bpo-26762: Avoid daemon process in _test_multiprocessing (#2842)
    
    test_level() of _test_multiprocessing._TestLogging now uses regular
    processes rather than daemon processes to prevent zombi processes
    (to not "leak" processes).
    (cherry picked from commit 06634950)
    
    * test_multiprocessing: Fix dangling process/thread (#2850)
    
    bpo-26762: Fix more dangling processes and threads in
    test_multiprocessing:
    
    * Queue: call close() followed by join_thread()
    * Process: call join() or self.addCleanup(p.join)
    (cherry picked from commit d7e64d99)
    
    * test_multiprocessing detects dangling per test case (#2841)
    
    bpo-26762: test_multiprocessing now detects dangling processes and
    threads per test case classes:
    
    * setUpClass()/tearDownClass() of mixin classes now check if
      multiprocessing.process._dangling or threading._dangling was
      modified to detect "dangling" processses and threads.
    * ManagerMixin.tearDownClass() now also emits a warning if it still
      has more than one active child process after 5 seconds.
    * tearDownModule() now checks for dangling processes and threads
      before sleep 500 ms. And it now only sleeps if there is a least one
      dangling process or thread.
    (cherry picked from commit ffb49408)
    
    * bpo-26762: test_multiprocessing close more queues (#2855)
    
    * Close explicitly queues to make sure that we don't leave dangling
      threads
    * test_queue_in_process(): remove unused queue
    * test_access() joins also the process to fix a random warning
    (cherry picked from commit b4c52966)
    
    * bpo-31019: Fix multiprocessing.Process.is_alive() (#2875)
    
    multiprocessing.Process.is_alive() now removes the process from the
    _children set if the process completed.
    
    The change prevents leaking "dangling" processes.
    (cherry picked from commit 2db64823)
    d0adfb25
process.py 9.02 KB