<?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>佳音的博客 &#187; python</title>
	<atom:link href="http://blog.00rz.com/category/python/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.00rz.com</link>
	<description>方乃做人之本，圆乃处世之道</description>
	<lastBuildDate>Wed, 07 Dec 2011 11:31:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>the.Definitive.Guide.to.Pylons.Dec.2008.pdf</title>
		<link>http://blog.00rz.com/2010/05/the-definitive-guide-to-pylons-dec-2008-pdf.html</link>
		<comments>http://blog.00rz.com/2010/05/the-definitive-guide-to-pylons-dec-2008-pdf.html#comments</comments>
		<pubDate>Tue, 11 May 2010 16:35:02 +0000</pubDate>
		<dc:creator>佳音</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.00rz.com/?p=227</guid>
		<description><![CDATA[Apress.the.Definitive.Guide.to.Pylons.Dec.2008]]></description>
			<content:encoded><![CDATA[<p><a href='http://blog.00rz.com/wp-content/uploads/2010/05/Apress.the_.Definitive.Guide_.to_.Pylons.Dec.2008.pdf'>Apress.the.Definitive.Guide.to.Pylons.Dec.2008</a></p>
<p><map name='google_ad_map_227_4664d84c6fd17adb'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/227?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_227_4664d84c6fd17adb' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=227&amp;url= http%3A%2F%2Fblog.00rz.com%2F2010%2F05%2Fthe-definitive-guide-to-pylons-dec-2008-pdf.html' /></p>]]></content:encoded>
			<wfw:commentRss>http://blog.00rz.com/2010/05/the-definitive-guide-to-pylons-dec-2008-pdf.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>python epoll demo</title>
		<link>http://blog.00rz.com/2010/05/python-epoll-demo.html</link>
		<comments>http://blog.00rz.com/2010/05/python-epoll-demo.html#comments</comments>
		<pubDate>Sat, 01 May 2010 06:03:41 +0000</pubDate>
		<dc:creator>佳音</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.00rz.com/2010/05/python-epoll-demo.html</guid>
		<description><![CDATA[from http://www.codexon.com/posts/debunking-the-erlang-and-haskell-hype-for-servers epoll.py &#160; import select import socket &#160; EPOLLIN = select.EPOLLIN EPOLLOUT = select.EPOLLOUT &#160; epoll = select.epoll&#40;60000&#41; connections = &#123;&#125; &#160; class Server&#40;object&#41;: &#160; &#160; def __init__&#40;self&#41;: &#160; &#160; &#160; &#160; sock = socket.socket&#40;socket.AF_INET, socket.SOCK_STREAM&#41; &#160; &#160; &#160; &#160; sock.setsockopt&#40;socket.SOL_SOCKET, socket.SO_REUSEADDR, 1&#41; &#160; &#160; &#160; &#160; sock.setblocking&#40;0&#41; &#160; &#160; &#160; &#160; sock.bind&#40;&#40;”, 8050&#41;&#41; [...]]]></description>
			<content:encoded><![CDATA[<p>from http://www.codexon.com/posts/debunking-the-erlang-and-haskell-hype-for-servers<br />
epoll.py</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">select</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">socket</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">EPOLLIN = <span class="kw3">select</span>.<span class="me1">EPOLLIN</span></div>
</li>
<li class="li1">
<div class="de1">EPOLLOUT = <span class="kw3">select</span>.<span class="me1">EPOLLOUT</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">epoll = <span class="kw3">select</span>.<span class="me1">epoll</span><span class="br0">&#40;</span><span class="nu0">60000</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">connections = <span class="br0">&#123;</span><span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">class</span> Server<span class="br0">&#40;</span><span class="kw2">object</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> <span class="kw4">__init__</span><span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; sock = <span class="kw3">socket</span>.<span class="kw3">socket</span><span class="br0">&#40;</span><span class="kw3">socket</span>.<span class="me1">AF_INET</span>, <span class="kw3">socket</span>.<span class="me1">SOCK_STREAM</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; sock.<span class="me1">setsockopt</span><span class="br0">&#40;</span><span class="kw3">socket</span>.<span class="me1">SOL_SOCKET</span>, <span class="kw3">socket</span>.<span class="me1">SO_REUSEADDR</span>, <span class="nu0">1</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; sock.<span class="me1">setblocking</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; sock.<span class="me1">bind</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="st0">”</span>, <span class="nu0">8050</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; sock.<span class="me1">listen</span><span class="br0">&#40;</span><span class="nu0">60000</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="kw3">socket</span> = sock</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; fileno = sock.<span class="me1">fileno</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; connections<span class="br0">&#91;</span>fileno<span class="br0">&#93;</span> = <span class="kw2">self</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; epoll.<span class="me1">register</span><span class="br0">&#40;</span>fileno, EPOLLIN<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> onInput<span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; sock, address = <span class="kw2">self</span>.<span class="kw3">socket</span>.<span class="me1">accept</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; Client<span class="br0">&#40;</span>sock<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">class</span> Client<span class="br0">&#40;</span><span class="kw2">object</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">input</span> &nbsp;= <span class="st0">”</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; output = <span class="st0">&quot;HTTP/1.0 200 OK<span class="es0">\r</span><span class="es0">\n</span>Content-Length: 5<span class="es0">\r</span><span class="es0">\n</span><span class="es0">\r</span><span class="es0">\n</span>Pong!<span class="es0">\r</span><span class="es0">\n</span>&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> <span class="kw4">__init__</span><span class="br0">&#40;</span><span class="kw2">self</span>, sock<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; sock.<span class="me1">setblocking</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; fileno = sock.<span class="me1">fileno</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; epoll.<span class="me1">register</span><span class="br0">&#40;</span>fileno, EPOLLIN|EPOLLOUT<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; connections<span class="br0">&#91;</span>fileno<span class="br0">&#93;</span> = <span class="kw2">self</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="kw3">socket</span> = sock</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> onInput<span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; newdata = <span class="kw2">self</span>.<span class="kw3">socket</span>.<span class="me1">recv</span><span class="br0">&#40;</span><span class="nu0">1024</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="kw2">len</span><span class="br0">&#40;</span>newdata<span class="br0">&#41;</span> <span class="kw1">is</span> <span class="nu0">0</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="kw2">input</span> += newdata</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="kw1">def</span> onOutput<span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; sent = <span class="kw2">self</span>.<span class="kw3">socket</span>.<span class="me1">send</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">output</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">output</span> = <span class="kw2">self</span>.<span class="me1">output</span><span class="br0">&#91;</span>sent:<span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="kw2">len</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">output</span><span class="br0">&#41;</span> <span class="kw1">is</span> <span class="nu0">0</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> close<span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; fileno = <span class="kw2">self</span>.<span class="kw3">socket</span>.<span class="me1">fileno</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">del</span> connections<span class="br0">&#91;</span>fileno<span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; epoll.<span class="me1">unregister</span><span class="br0">&#40;</span>fileno<span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="kw3">socket</span>.<span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">Server<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">while</span> <span class="nu0">1</span>:</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="kw1">for</span> fd, event <span class="kw1">in</span> epoll.<span class="me1">poll</span><span class="br0">&#40;</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> event &amp; EPOLLIN:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; connections<span class="br0">&#91;</span>fd<span class="br0">&#93;</span>.<span class="me1">onInput</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> event &amp; EPOLLOUT:</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; connections<span class="br0">&#91;</span>fd<span class="br0">&#93;</span>.<span class="me1">onOutput</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p><map name='google_ad_map_221_4664d84c6fd17adb'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/221?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_221_4664d84c6fd17adb' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=221&amp;url= http%3A%2F%2Fblog.00rz.com%2F2010%2F05%2Fpython-epoll-demo.html' /></p>]]></content:encoded>
			<wfw:commentRss>http://blog.00rz.com/2010/05/python-epoll-demo.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>了解 epoll 之 python</title>
		<link>http://blog.00rz.com/2010/04/%e4%ba%86%e8%a7%a3-epoll-%e4%b9%8b-python.html</link>
		<comments>http://blog.00rz.com/2010/04/%e4%ba%86%e8%a7%a3-epoll-%e4%b9%8b-python.html#comments</comments>
		<pubDate>Fri, 30 Apr 2010 15:46:34 +0000</pubDate>
		<dc:creator>佳音</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.00rz.com/?p=217</guid>
		<description><![CDATA[http://scotdoyle.com/python-epoll-howto.html]]></description>
			<content:encoded><![CDATA[<p>http://scotdoyle.com/python-epoll-howto.html</p>
<p><map name='google_ad_map_217_4664d84c6fd17adb'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/217?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_217_4664d84c6fd17adb' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=217&amp;url= http%3A%2F%2Fblog.00rz.com%2F2010%2F04%2F%25e4%25ba%2586%25e8%25a7%25a3-epoll-%25e4%25b9%258b-python.html' /></p>]]></content:encoded>
			<wfw:commentRss>http://blog.00rz.com/2010/04/%e4%ba%86%e8%a7%a3-epoll-%e4%b9%8b-python.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

