| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- # -------------------------------------------------------------------------
- # Copyright (c) Microsoft Corporation. All rights reserved.
- # Licensed under the MIT License.
- # --------------------------------------------------------------------------
- # Get/Set cpu affinity. Currently only support part of Unix system
- import logging
- import os
- logger = logging.getLogger(__name__)
- class AffinitySetting:
- def __init__(self):
- self.pid = os.getpid()
- self.affinity = None
- self.is_os_supported = hasattr(os, "sched_getaffinity") and hasattr(os, "sched_setaffinity")
- if not self.is_os_supported:
- logger.warning("Current OS does not support os.get_affinity() and os.set_affinity()")
- def get_affinity(self):
- if self.is_os_supported:
- self.affinity = os.sched_getaffinity(self.pid)
- def set_affinity(self):
- if self.is_os_supported:
- current_affinity = os.sched_getaffinity(self.pid)
- if self.affinity != current_affinity:
- logger.warning(
- "Replacing affinity setting %s with %s",
- str(current_affinity),
- str(self.affinity),
- )
- os.sched_setaffinity(self.pid, self.affinity)
- if __name__ == "__main__":
- affi_helper = AffinitySetting()
- affi_helper.get_affinity()
- affi_helper.set_affinity()
|