STINNER Victor <vstin...@redhat.com> added the comment:
Attached PR 11136 modify _worker_handler() loop to wait on threading.Event events, so Pool.join() completes as soon as possible. Example: --- import multiprocessing import time def the_test(): start_time = time.monotonic() pool = multiprocessing.Pool(1) res = pool.apply_async(int, ("1",)) pool.close() #pool.terminate() pool.join() dt = time.monotonic() - start_time print("%.3f sec" % dt) the_test() --- Minimum timing with _handle_results() using: * current code (time.sleep(0.1)): min 0.132 sec * time.sleep(1.0): min 1.033 sec * my PR using events (wait(0.1)): min 0.033 sec Currently, join() minimum timing depends on _handle_results() sleep() duration (100 ms). With my PR, it completes as soon as possible: when state change and/or when a result is set. My PR still requires an hardcoded delay of 100 ms to workaround bpo-35478 bug: results are never set if the pool is terminated. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue35479> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com