conftest.py 704 B

12345678910111213141516171819202122232425262728
  1. import gc
  2. from contextlib import suppress
  3. import psutil
  4. import pytest
  5. from hivemind.utils import get_logger
  6. logger = get_logger(__name__)
  7. @pytest.fixture(autouse=True, scope="session")
  8. def cleanup_children():
  9. yield
  10. gc.collect() # Call .__del__() for removed objects
  11. children = psutil.Process().children(recursive=True)
  12. if children:
  13. logger.info(f"Cleaning up {len(children)} leftover child processes")
  14. for child in children:
  15. with suppress(psutil.NoSuchProcess):
  16. child.terminate()
  17. psutil.wait_procs(children, timeout=1)
  18. for child in children:
  19. with suppress(psutil.NoSuchProcess):
  20. child.kill()