<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Mouse Vs. The Python &#187; ctypes</title>
	<atom:link href="http://www.blog.pythonlibrary.org/tag/ctypes/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.blog.pythonlibrary.org</link>
	<description>Python Programming from the Frontlines</description>
	<lastBuildDate>Sun, 08 Jan 2012 12:45:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Python: Finding the Commit Charge Values in Windows</title>
		<link>http://www.blog.pythonlibrary.org/2010/03/05/python-finding-the-commit-charge-values-in-windows/</link>
		<comments>http://www.blog.pythonlibrary.org/2010/03/05/python-finding-the-commit-charge-values-in-windows/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 14:24:38 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[ctypes]]></category>
		<category><![CDATA[System Admin]]></category>

		<guid isPermaLink="false">http://www.blog.pythonlibrary.org/?p=656</guid>
		<description><![CDATA[This week I was tasked with trying to find a way to find out what the Peak Commit value was on our virtual workstations. The reason being that we are trying to save money and were wondering if we were allocating too much memory or not. We didn&#8217;t need the Total Commit Charge or the [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-left"><a href="http://twitter.com/share" class="twitter-share-button" data-counturl="http://www.blog.pythonlibrary.org/2010/03/05/python-finding-the-commit-charge-values-in-windows/" data-url="http://bit.ly/uzbNAy" data-text="Python: Finding the Commit Charge Values in Windows" data-count="vertical" data-via="socializeWP" ><!--Tweetter--></a></div><div class="socialize-in-button socialize-in-button-left"><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.blog.pythonlibrary.org/2010/03/05/python-finding-the-commit-charge-values-in-windows/&amp;layout=button_count&amp;show_faces=true&amp;width=100&amp;action=like&amp;font=arial&amp;colorscheme=light&amp;height=65" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100px !important; height:65px;" allowTransparency="true"></iframe></div><div class="socialize-in-button socialize-in-button-left"><script type="text/javascript">
			<!-- 
			reddit_url = "http://www.blog.pythonlibrary.org/2010/03/05/python-finding-the-commit-charge-values-in-windows/";
			reddit_title = "Python: Finding the Commit Charge Values in Windows";	//-->
		</script><script type="text/javascript" src="http://www.reddit.com/static/button/button2.js"></script></div><div class="socialize-in-button socialize-in-button-left"><g:plusone size="small" href="http://www.blog.pythonlibrary.org/2010/03/05/python-finding-the-commit-charge-values-in-windows/"></g:plusone></div></div><p>This week I was tasked with trying to find a way to find out what the Peak Commit value was on our virtual workstations. The reason being that we are trying to save money and were wondering if we were allocating too much memory or not. We didn&#8217;t need the Total Commit Charge or the Limit Commit Charge values, but since I figured out how to get those during my research, I&#8217;ll show how to get those as well.<span id="more-656"></span></p>
<p>When I first started searching on this topic, I tried such search terms as &#8220;python peak commit value&#8221; and variations thereof. That got me nowhere, so I replaced &#8220;oython&#8221; with &#8220;wmi&#8221; and found the <a href="http://msdn.microsoft.com/en-us/library/aa394268%28VS.85%29.aspx">Win32_PerfFormattedData_PerfOS_Memory</a> Class on MSDN. I thought this was it, but it only gave me the Commit Charge Limit and the Total Commit Charge. Here&#8217;s how I got those values using Tim Golden&#8217;s WMI module:</p>
<pre class="python"><span style="color: #ff7700;font-weight:bold;">import</span> wmi
&nbsp;
c = wmi.<span style="color: black;">WMI</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">for</span> item <span style="color: #ff7700;font-weight:bold;">in</span> c.<span style="color: black;">Win32_PerfFormattedData_PerfOS_Memory</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
    commitChargeLimit = <span style="color: #008000;">int</span><span style="color: black;">&#40;</span>item.<span style="color: black;">CommitLimit</span><span style="color: black;">&#41;</span> / <span style="color: #ff4500;">1024</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">for</span> item <span style="color: #ff7700;font-weight:bold;">in</span> c.<span style="color: black;">Win32_PerfFormattedData_PerfOS_Memory</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
    commitChargeTotal = <span style="color: #008000;">int</span><span style="color: black;">&#40;</span>item.<span style="color: black;">CommittedBytes</span><span style="color: black;">&#41;</span> / <span style="color: #ff4500;">1024</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Commit Charge Limit: &quot;</span>, commitChargeLimit
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Commit Charge Total: &quot;</span>, commitChargeTotal</pre>
<p>This is neat stuff and shows how easy it is to take the documentation at MSDN and translate it into something usable in Python. Unfortunately, it just didn&#8217;t give me the information I needed. My next stop was the <a href="http://mail.python.org/mailman/listinfo/python-win32">PyWin32 mailing list</a> where Mark Hammond informed me of the win32pdh and win32pdhutil modules. These expose performance counters, but I couldn&#8217;t find a way to use it to get this information either. Fortunately, I found an old post on the <a href="http://forum.sysinternals.com/forum_posts.asp?TID=15540&#038;PID=75852">sysinternals forum </a> that gave me a clue. Here is what it said:</p>
<p><quote><br />
The only way I&#8217;m aware of that one can get this detail is from the uMmPeakCommitLimit member of the SYSTEM_PERFORMANCE_INFORMATION structure one passes to NtQuerySystemInformation when calling it with the SystemPerformanceInformation type.<br />
</quote></p>
<p>I asked Mr. Hammond if that meant that I would need to use <a href="http://python.net/crew/theller/ctypes/">ctypes</a> since the <a href="http://msdn.microsoft.com/en-us/library/ms724509%28VS.85%29.aspx">NtQuerySystemInformation</a> class isn&#8217;t exposed by PyWin32 and he said &#8220;probably&#8221;. The ctypes module is pretty low-level and not something I&#8217;ve used except when I&#8217;ve copied a script from ActiveState. It&#8217;s a pretty handy module though and was added to the <a href="http://docs.python.org/library/ctypes.html">standard library</a> in version 2.5. From what I can tell, it was created by Thomas Heller.</p>
<p>Anyway, ctypes has its own <a href="https://lists.sourceforge.net/lists/listinfo/ctypes-users">mailing list</a>, so I decided to try there. I received two replies, one of which was from the man himself (Heller). He gave me a script that didn&#8217;t appear to work at first, but after a little back and forth with him, he got me straightened out. Here&#8217;s the result:</p>
<pre class="python"><span style="color: #ff7700;font-weight:bold;">from</span> ctypes <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #66cc66;">*</span>
&nbsp;
SystemBasicInformation = <span style="color: #ff4500;">0</span>
SystemPerformanceInformation = <span style="color: #ff4500;">2</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> SYSTEM_BASIC_INFORMATION<span style="color: black;">&#40;</span>Structure<span style="color: black;">&#41;</span>:
    _fields_ = <span style="color: black;">&#91;</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Reserved1&quot;</span>, c_long <span style="color: #66cc66;">*</span> <span style="color: #ff4500;">10</span><span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;NumberOfProcessors&quot;</span>, c_byte<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;bUnknown2&quot;</span>, c_byte<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;bUnknown3&quot;</span>, c_short<span style="color: black;">&#41;</span>
                <span style="color: black;">&#93;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> SYSTEM_PERFORMANCE_INFORMATION<span style="color: black;">&#40;</span>Structure<span style="color: black;">&#41;</span>:
    _fields_ = <span style="color: black;">&#91;</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;IdleTime&quot;</span>, c_int64<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;ReadTransferCount&quot;</span>, c_int64<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;WriteTransferCount&quot;</span>, c_int64<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;OtherTransferCount&quot;</span>, c_int64<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;ReadOperationCount&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;WriteOperationCount&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;OtherOperationCount&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;AvailablePages&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;TotalCommittedPages&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;TotalCommitLimit&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;PeakCommitment&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;PageFaults&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;WriteCopyFaults&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;TransitionFaults&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Reserved1&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;DemandZeroFaults&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;PagesRead&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;PageReadIos&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Reserved2&quot;</span>, c_ulong <span style="color: #66cc66;">*</span> <span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;PagefilePagesWritten&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;PagefilePageWriteIos&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;MappedFilePagesWritten&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;MappedFilePageWriteIos&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;PagedPoolUsage&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;NonPagedPoolUsage&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;PagedPoolAllocs&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;PagedPoolFrees&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;NonPagedPoolAllocs&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;NonPagedPoolFrees&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;TotalFreeSystemPtes&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;SystemCodePage&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;TotalSystemDriverPages&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;TotalSystemCodePages&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;SmallNonPagedLookasideListAllocateHits&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;SmallPagedLookasideListAllocateHits&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Reserved3&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;MmSystemCachePage&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;PagedPoolPage&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;SystemDriverPage&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;FastReadNoWait&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;FastReadWait&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;FastReadResourceMiss&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;FastReadNotPossible&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;FastMdlReadNoWait&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;FastMdlReadWait&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;FastMdlReadResourceMiss&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;FastMdlReadNotPossible&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;MapDataNoWait&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;MapDataWait&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;MapDataNoWaitMiss&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;MapDataWaitMiss&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;PinMappedDataCount&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;PinReadNoWait&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;PinReadWait&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;PinReadNoWaitMiss&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;PinReadWaitMiss&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;CopyReadNoWait&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;CopyReadWait&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;CopyReadNoWaitMiss&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;CopyReadWaitMiss&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;MdlReadNoWait&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;MdlReadWait&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;MdlReadNoWaitMiss&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;MdlReadWaitMiss&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;ReadAheadIos&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;LazyWriteIos&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;LazyWritePages&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;DataFlushes&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;DataPages&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;ContextSwitches&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;FirstLevelTbFills&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;SecondLevelTbFills&quot;</span>, c_ulong<span style="color: black;">&#41;</span>,
                <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;SystemCalls&quot;</span>, c_ulong<span style="color: black;">&#41;</span><span style="color: black;">&#93;</span>
&nbsp;
sbi = SYSTEM_BASIC_INFORMATION<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
retlen = c_ulong<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
res = windll.<span style="color: black;">ntdll</span>.<span style="color: black;">NtQuerySystemInformation</span><span style="color: black;">&#40;</span>SystemBasicInformation,
                                            byref<span style="color: black;">&#40;</span>sbi<span style="color: black;">&#41;</span>,
                                            sizeof<span style="color: black;">&#40;</span>sbi<span style="color: black;">&#41;</span>,
                                            byref<span style="color: black;">&#40;</span>retlen<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> res, retlen
<span style="color: #ff7700;font-weight:bold;">print</span> sbi.<span style="color: black;">NumberOfProcessors</span>
&nbsp;
&nbsp;
spi = SYSTEM_PERFORMANCE_INFORMATION<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
retlen = c_ulong<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
res = windll.<span style="color: black;">ntdll</span>.<span style="color: black;">NtQuerySystemInformation</span><span style="color: black;">&#40;</span>SystemPerformanceInformation,
                                            byref<span style="color: black;">&#40;</span>spi<span style="color: black;">&#41;</span>,
                                            sizeof<span style="color: black;">&#40;</span>spi<span style="color: black;">&#41;</span>,
                                            byref<span style="color: black;">&#40;</span>retlen<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> res, retlen
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Peak commit: &quot;</span>,
<span style="color: #ff7700;font-weight:bold;">print</span> spi.<span style="color: black;">PeakCommitment</span> <span style="color: #66cc66;">*</span> <span style="color: #ff4500;">4096</span> / <span style="color: #ff4500;">1024</span></pre>
<p>I don&#8217;t really understand everything that&#8217;s going on here, but I&#8217;m glad it works. Well, I should say that it works on Windows XP Professional, 32-bit with Python 2.5. I tried it on Windows 7 64-bit as well and while the script ran, it returned &#8220;0L&#8221;. I&#8217;m guessing that 64-bit operating systems need a slightly different script, but since all our workstations currently use 32-bit, it doesn&#8217;t really matter at this point. Once again, the Python community came through for me and showed me just how amazing they are!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.pythonlibrary.org/2010/03/05/python-finding-the-commit-charge-values-in-windows/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 1.006 seconds -->

