diff --git a/setupext.py b/setupext.py index 06ad614cb4d0..8c01bbe32ab1 100755 --- a/setupext.py +++ b/setupext.py @@ -1717,7 +1717,8 @@ def check_requirements(self): except: return "unknown (can not use multiprocessing to determine)" try: - success, msg = p.map(backend_gtk3agg_internal_check, [0])[0] + res = p.map_async(backend_gtk3agg_internal_check, [0]) + success, msg = res.get(timeout=5)[0] except: success = False msg = "Could not determine" @@ -1781,9 +1782,15 @@ def check_requirements(self): p = multiprocessing.Pool() except: return "unknown (can not use multiprocessing to determine)" - success, msg = p.map(backend_gtk3cairo_internal_check, [0])[0] - p.close() - p.join() + try: + res = p.map_async(backend_gtk3cairo_internal_check, [0]) + success, msg = res.get(timeout=5)[0] + except: + success = False + raise + finally: + p.close() + p.join() if success: BackendAgg.force = True @@ -1916,7 +1923,8 @@ def check_requirements(self): else: # Multiprocessing OK try: - msg = p.map(self.callback, [self])[0] + res = p.map_async(self.callback, [self]) + msg = res.get(timeout=5)[0] except: # If we hit an error on multiprocessing raise it raise