m2m模型翻译
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
1.4 KiB

6 months ago
  1. # -------------------------------------------------------------------------
  2. # Copyright (c) Microsoft Corporation. All rights reserved.
  3. # Licensed under the MIT License.
  4. # --------------------------------------------------------------------------
  5. # Get/Set cpu affinity. Currently only support part of Unix system
  6. import logging
  7. import os
  8. logger = logging.getLogger(__name__)
  9. class AffinitySetting:
  10. def __init__(self):
  11. self.pid = os.getpid()
  12. self.affinity = None
  13. self.is_os_supported = hasattr(os, "sched_getaffinity") and hasattr(os, "sched_setaffinity")
  14. if not self.is_os_supported:
  15. logger.warning("Current OS does not support os.get_affinity() and os.set_affinity()")
  16. def get_affinity(self):
  17. if self.is_os_supported:
  18. self.affinity = os.sched_getaffinity(self.pid)
  19. def set_affinity(self):
  20. if self.is_os_supported:
  21. current_affinity = os.sched_getaffinity(self.pid)
  22. if self.affinity != current_affinity:
  23. logger.warning(
  24. "Replacing affinity setting %s with %s",
  25. str(current_affinity),
  26. str(self.affinity),
  27. )
  28. os.sched_setaffinity(self.pid, self.affinity)
  29. if __name__ == "__main__":
  30. affi_helper = AffinitySetting()
  31. affi_helper.get_affinity()
  32. affi_helper.set_affinity()