Поиск SC_PAGE_SIZE с использованием Python в Windows

Я работаю в этой смешанной среде, где я нахожусь на машине Windows, используя Simics и Cygwin для запуска кода в среде, подобной unix. Я был кодированием в C, но я заинтересован в том, чтобы попытаться выполнить свое решение в Python. В среде unix для поиска SC_PAGE_SIZE вы можете просто:

 #Python-2.7, unix environment page_size = os.sysconf("SC_PAGE_SIZE") 

Если вы кодируете в c, вы можете:

 #C, unix environment size_t page_size = (size_t) sysconf (_SC_PAGESIZE); 

Однако при использовании python в Windows os.sysconf не существует, и я не смог найти замену. Что я могу использовать в python для поиска PAGE_SIZE среды.

Замечание, я знаю, что вы можете задаться вопросом, почему я использую установку как есть, и это не мой выбор. Это домашнее задание с работы. Вопрос, который я задаю, для моей собственной выгоды – это не для домашней работы.

Пытаться:

 import mmap print mmap.PAGESIZE 

Я не эксперт в системе, поэтому я не делаю то, что соответствует SC_PAGE_SIZE на окнах. Hovever, вы можете использовать WMI для запроса производительности системы.

Вот пример, который должен дать много чего. Можете найти то, что вы ищете:

 import win32com.client import unicodedata def _(text): if type(text) is unicode: return unicodedata.normalize('NFKD', text).encode('ascii','ignore') return text def to_kb(x): if x: return int(x)/1024 return x strComputer = "." objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator") objSWbemServices = objWMIService.ConnectServer(strComputer,"root\cimv2") colItems = objSWbemServices.ExecQuery("Select * from Win32_Process") for objItem in colItems: print "------------------------------------------" print "Command Line: ", _(objItem.CommandLine) print "Process Id: ", objItem.ProcessId print "Handle: ", objItem.Handle print "Handle Count: ", objItem.HandleCount print "Maximum Working Set Size: ", to_kb(objItem.MaximumWorkingSetSize) print "Minimum Working Set Size: ", to_kb(objItem.MinimumWorkingSetSize) print "Page Faults: ", objItem.PageFaults print "PageFile Usage: ", objItem.PageFileUsage print "Peak PageFile Usage: ", objItem.PeakPageFileUsage print "Peak Virtual Size: ", objItem.PeakVirtualSize print "Peak Working Set Size: ", objItem.PeakWorkingSetSize print "Private Page Count: ", objItem.PrivatePageCount print "Quota NonPaged Pool Usage: ", objItem.QuotaNonPagedPoolUsage print "Quota Paged Pool Usage: ", objItem.QuotaPagedPoolUsage print "Quota Peak NonPaged Pool Usage: ", objItem.QuotaPeakNonPagedPoolUsage print "Quota Peak Paged Pool Usage: ", objItem.QuotaPeakPagedPoolUsage print "Virtual Size: ", objItem.VirtualSize print "Working Set Size: ", to_kb(objItem.WorkingSetSize) print "Write Operation Count: ", objItem.WriteOperationCount print "Write Transfer Count: ", objItem.WriteTransferCount 

Единственный эквивалент, который я мог найти, был в C, но если я скомпилирую код, а затем выполнил его из python, я могу получить результат, который я искал. К сожалению, на данный момент не существует команды python, которая работает в Windows, которая так же проста, как версия unix, но это по крайней мере дает мне результат.

 int main(void) { SYSTEM_INFO si; GetSystemInfo(&si); printf("%u", si.dwPageSize); return 0; } 
Interesting Posts