def get_affinity(self): pHandle = self._get_handle_for_pid() try: return win32process.GetProcessAffinityMask(pHandle)[0] except win32process.error, e: print "unable to get the running cpu" raise ValueError, e
def SetupProcessors(cluster): if sys.platform != "win32": return handle = win32api.GetCurrentProcess() processMask,systemMask = win32process.GetProcessAffinityMask(handle) ht = False if systemMask&8: #we're going to count this as a hyperthreaded system #as we don't currently have any servers with > 2 physical cpu ht = True mask = 1 if cluster == 0: if ht: mask = 3 else: mask = 1 elif cluster == 1: if ht: mask = 12 else: mask = 2 print "Setting Processor Affinity Mask to",mask win32process.SetProcessAffinityMask(handle,mask)
def set_process_affinity_mask(pid, value): pHandle = _get_handle_for_pid(pid, False) current = win32process.GetProcessAffinityMask(pHandle)[0] try: win32process.SetProcessAffinityMask(pHandle, value) except win32process.error, e: raise ValueError, e
def set_affinity(self, value): pHandle = self._get_handle_for_pid(0, False) current = win32process.GetProcessAffinityMask(pHandle)[0] try: win32process.SetProcessAffinityMask(pHandle, current) except win32process.error, e: print "unable to set process affinity" raise ValueError, e
def test_cpu_affinity(self): def from_bitmask(x): return [i for i in range(64) if (1 << i) & x] handle = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION, win32con.FALSE, self.pid) self.addCleanup(win32api.CloseHandle, handle) sys_value = from_bitmask( win32process.GetProcessAffinityMask(handle)[0]) psutil_value = psutil.Process(self.pid).cpu_affinity() self.assertEqual(psutil_value, sys_value)
def set_affinity(pid=0, mask=1): try: hProc = __open_process(pid, ro=False) mask_old, mask_sys_old = win32process.GetProcessAffinityMask( hProc) res = win32process.SetProcessAffinityMask(hProc, mask) win32api.CloseHandle(hProc) if res: raise OSError except win32process.error as e: raise ValueError, e return mask_old
def get_process_affinity_mask(pid): pHandle = _get_handle_for_pid(pid) try: return win32process.GetProcessAffinityMask(pHandle)[0] except win32process.error as e: raise ValueError(e)
def get_affinity_mask(self): try: return win32process.GetProcessAffinityMask(self.pHandle)[0] except win32process.error as e: raise ValueError(e)
def get_affinity(pid=0): hProc = __open_process(pid) mask, mask_sys = win32process.GetProcessAffinityMask(hProc) win32api.CloseHandle(hProc) return mask
def sched_getaffinity(pid): pid = pid or os.getpid() handle = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION, False, pid) return _mask_to_cores(win32process.GetProcessAffinityMask(handle)[0])