﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-开源之路</title><link>http://www.cppblog.com/riverbird/</link><description>忆往昔,
项羽不过江.
江东好风光!
今振臂一呼,率甲三千,
试问天!
</description><language>zh-cn</language><lastBuildDate>Tue, 14 Apr 2026 20:58:26 GMT</lastBuildDate><pubDate>Tue, 14 Apr 2026 20:58:26 GMT</pubDate><ttl>60</ttl><item><title>[导入]python实现socket通讯(UDP)</title><link>http://www.cppblog.com/riverbird/archive/2009/03/15/76670.html</link><dc:creator>江边之鸟</dc:creator><author>江边之鸟</author><pubDate>Sun, 15 Mar 2009 11:26:00 GMT</pubDate><guid>http://www.cppblog.com/riverbird/archive/2009/03/15/76670.html</guid><wfw:comment>http://www.cppblog.com/riverbird/comments/76670.html</wfw:comment><comments>http://www.cppblog.com/riverbird/archive/2009/03/15/76670.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/riverbird/comments/commentRss/76670.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/riverbird/services/trackbacks/76670.html</trackback:ping><description><![CDATA[UDP协议相比TCP要简单许多,虽然数据无法保证完整性.    <br />先看一下client端的演示代码:<br /><br />  import socket     <br />s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)      <br />port = 8000      <br />host = '192.168.1.102'      <br />while True:      <br />&#160;&#160;&#16...<!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="/logs/35942064.html">safari 4.0出来了</a> 2009-03-02</div><div><a href="/logs/35860139.html">说说兰州的朋友－小赵</a> 2008-05-29</div><div><a href="/logs/35860142.html">08年一定要去趟黄山</a> 2008-02-02</div><div><a href="/logs/35860152.html">用GCC编译C程序</a> 2007-03-07</div><div><a href="/logs/35860158.html">综合英语一练习题三</a> 2007-03-01</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Friverbird.blogbus.com%2Flogs%2F36597361.html&title=python%E5%AE%9E%E7%8E%B0socket%E9%80%9A%E8%AE%AF%28UDP%29">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://icity.cn" target="_blank">《城客》：第一本中文互动杂志！</a></b></div><br /><br /><br>文章来源:<a href='http://riverbird.blogbus.com/logs/36597361.html'>http://riverbird.blogbus.com/logs/36597361.html</a><img src ="http://www.cppblog.com/riverbird/aggbug/76670.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/riverbird/" target="_blank">江边之鸟</a> 2009-03-15 19:26 <a href="http://www.cppblog.com/riverbird/archive/2009/03/15/76670.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]国内博客（blog）搬家工具（服务）大全</title><link>http://www.cppblog.com/riverbird/archive/2009/03/03/76671.html</link><dc:creator>江边之鸟</dc:creator><author>江边之鸟</author><pubDate>Tue, 03 Mar 2009 07:04:00 GMT</pubDate><guid>http://www.cppblog.com/riverbird/archive/2009/03/03/76671.html</guid><wfw:comment>http://www.cppblog.com/riverbird/comments/76671.html</wfw:comment><comments>http://www.cppblog.com/riverbird/archive/2009/03/03/76671.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/riverbird/comments/commentRss/76671.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/riverbird/services/trackbacks/76671.html</trackback:ping><description><![CDATA[现在网络上的博客搬家服务，博客搬家工具越来越多，博客联盟大概收集了下，希望对那些想搬家的博客有所帮助。<br /><br />  一、和讯博客的“搬家公司”提供博客搬家服务  搬家服务地址：点这里<br /><br />  目标对象：新浪博客、搜狐博客、网易部落、TOM博客、MSN Space、天涯社区、中国博客网、中华部落阁、博客中国、博客中国专栏、DoNews、歪酷博客、敏思博客、BlogBUS、BlogDrive、百度空间、mop博客。<br /><br />  服务特色：该ID下博客文章、链...<!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="/logs/35898677.html">今天的好看簿怎么了</a> 2009-03-01</div><div><a href="/logs/31069902.html">申请了个blogbus空间</a> 2008-11-07</div><div><a href="/logs/35860146.html">解线性方程组(二阶行列式)</a> 2007-03-08</div><div><a href="/logs/35860151.html">C语言变量先定义后使用的好处</a> 2007-03-07</div><div><a href="/logs/35860165.html">交大第一学期-算是白过了</a> 2007-02-26</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Friverbird.blogbus.com%2Flogs%2F35992729.html&title=%E5%9B%BD%E5%86%85%E5%8D%9A%E5%AE%A2%EF%BC%88blog%EF%BC%89%E6%90%AC%E5%AE%B6%E5%B7%A5%E5%85%B7%EF%BC%88%E6%9C%8D%E5%8A%A1%EF%BC%89%E5%A4%A7%E5%85%A8">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://icity.cn" target="_blank">《城客》：第一本中文互动杂志！</a></b></div><br /><br /><br>文章来源:<a href='http://riverbird.blogbus.com/logs/35992729.html'>http://riverbird.blogbus.com/logs/35992729.html</a><img src ="http://www.cppblog.com/riverbird/aggbug/76671.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/riverbird/" target="_blank">江边之鸟</a> 2009-03-03 15:04 <a href="http://www.cppblog.com/riverbird/archive/2009/03/03/76671.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]今天的工作情况</title><link>http://www.cppblog.com/riverbird/archive/2009/03/03/76673.html</link><dc:creator>江边之鸟</dc:creator><author>江边之鸟</author><pubDate>Tue, 03 Mar 2009 05:37:00 GMT</pubDate><guid>http://www.cppblog.com/riverbird/archive/2009/03/03/76673.html</guid><wfw:comment>http://www.cppblog.com/riverbird/comments/76673.html</wfw:comment><comments>http://www.cppblog.com/riverbird/archive/2009/03/03/76673.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/riverbird/comments/commentRss/76673.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/riverbird/services/trackbacks/76673.html</trackback:ping><description><![CDATA[   现在找工作的事情,基本上集中在三点了.一是华为,现在基本已经定下来了,但是华为的管理相当严格,是唯一顾忌的事情;二是盛大,说是面试已通过,正在进行岗位评定,可能还需要过去一次.不过这里面用delphi作开发.三是一家新加坡公司,各方面都不错,而且可以直接从管理层做起,就等一个命题做完就可以了.但是却一直没有音讯.从下周周一,一定要开始工作啊.不能再等了,老婆孩子两张口,可是一直等着呢.<br /><br />  <!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="/logs/35991331.html">奇怪的消息</a> 2009-03-03</div><div><a href="/logs/35860142.html">08年一定要去趟黄山</a> 2008-02-02</div><div><a href="/logs/35860150.html">求表达式的值</a> 2007-03-07</div><div><a href="/logs/35860154.html">C,Very Good</a> 2007-03-07</div><div><a href="/logs/35860159.html">综合英语一练习题二</a> 2007-03-01</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Friverbird.blogbus.com%2Flogs%2F35989096.html&title=%E4%BB%8A%E5%A4%A9%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%83%85%E5%86%B5">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://icity.cn" target="_blank">《城客》：第一本中文互动杂志！</a></b></div><br /><br /><br>文章来源:<a href='http://riverbird.blogbus.com/logs/35989096.html'>http://riverbird.blogbus.com/logs/35989096.html</a><img src ="http://www.cppblog.com/riverbird/aggbug/76673.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/riverbird/" target="_blank">江边之鸟</a> 2009-03-03 13:37 <a href="http://www.cppblog.com/riverbird/archive/2009/03/03/76673.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]safari 4.0出来了</title><link>http://www.cppblog.com/riverbird/archive/2009/03/02/76674.html</link><dc:creator>江边之鸟</dc:creator><author>江边之鸟</author><pubDate>Mon, 02 Mar 2009 05:20:00 GMT</pubDate><guid>http://www.cppblog.com/riverbird/archive/2009/03/02/76674.html</guid><wfw:comment>http://www.cppblog.com/riverbird/comments/76674.html</wfw:comment><comments>http://www.cppblog.com/riverbird/archive/2009/03/02/76674.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/riverbird/comments/commentRss/76674.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/riverbird/services/trackbacks/76674.html</trackback:ping><description><![CDATA[safari 4出来了,和3.x版本相比,从界面上看,有比较大的改变.有点像是chrome的感觉.因为和chrome都在使用webkit引擎,可以用来作为备选浏览器.<br /><br />  <!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="/logs/35991331.html">奇怪的消息</a> 2009-03-03</div><div><a href="/logs/35989096.html">今天的工作情况</a> 2009-03-03</div><div><a href="/logs/35860139.html">说说兰州的朋友－小赵</a> 2008-05-29</div><div><a href="/logs/35860150.html">求表达式的值</a> 2007-03-07</div><div><a href="/logs/35860163.html">英语听力复习-句子</a> 2007-02-27</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Friverbird.blogbus.com%2Flogs%2F35942064.html&title=safari+4.0%E5%87%BA%E6%9D%A5%E4%BA%86">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://icity.cn" target="_blank">《城客》：第一本中文互动杂志！</a></b></div><br /><br /><br>文章来源:<a href='http://riverbird.blogbus.com/logs/35942064.html'>http://riverbird.blogbus.com/logs/35942064.html</a><img src ="http://www.cppblog.com/riverbird/aggbug/76674.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/riverbird/" target="_blank">江边之鸟</a> 2009-03-02 13:20 <a href="http://www.cppblog.com/riverbird/archive/2009/03/02/76674.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]如何利用Window Live Writer发布日志？</title><link>http://www.cppblog.com/riverbird/archive/2009/03/02/76675.html</link><dc:creator>江边之鸟</dc:creator><author>江边之鸟</author><pubDate>Mon, 02 Mar 2009 04:21:00 GMT</pubDate><guid>http://www.cppblog.com/riverbird/archive/2009/03/02/76675.html</guid><wfw:comment>http://www.cppblog.com/riverbird/comments/76675.html</wfw:comment><comments>http://www.cppblog.com/riverbird/archive/2009/03/02/76675.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/riverbird/comments/commentRss/76675.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/riverbird/services/trackbacks/76675.html</trackback:ping><description><![CDATA[版权声明：转载时请以超链接形式标明文章原始出处和作者信息及本声明    <br />http://bangzhuzhongxin.blogbus.com/logs/24030921.html<br /><br />   Windows Live Writer是一款免费的桌面应用程序，您可以使用它在Blog中轻松发布丰富内容。通过它，您能够在本地电脑中撰写、发布、管理日志，您可前往http://get.live.com/writer/overview下载这款软件。<br /><br />   目前Bl...<!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="/logs/35989096.html">今天的工作情况</a> 2009-03-03</div><div><a href="/logs/35860141.html">我的相册上线了</a> 2008-02-28</div><div><a href="/logs/35860145.html">由齐玉苓诉陈晓琪等教育权案看宪法司法化</a> 2007-03-08</div><div><a href="/logs/35860161.html">理解《诗经.小雅.采薇》的思想内容</a> 2007-02-28</div><div><a href="/logs/35860166.html">决定记录我的交大学习生活</a> 2007-02-26</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Friverbird.blogbus.com%2Flogs%2F35937634.html&title=%E5%A6%82%E4%BD%95%E5%88%A9%E7%94%A8Window+Live+Writer%E5%8F%91%E5%B8%83%E6%97%A5%E5%BF%97%EF%BC%9F">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://icity.cn" target="_blank">《城客》：第一本中文互动杂志！</a></b></div><br /><br /><br>文章来源:<a href='http://riverbird.blogbus.com/logs/35937634.html'>http://riverbird.blogbus.com/logs/35937634.html</a><img src ="http://www.cppblog.com/riverbird/aggbug/76675.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/riverbird/" target="_blank">江边之鸟</a> 2009-03-02 12:21 <a href="http://www.cppblog.com/riverbird/archive/2009/03/02/76675.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]了解一下windows live writer</title><link>http://www.cppblog.com/riverbird/archive/2009/03/02/76676.html</link><dc:creator>江边之鸟</dc:creator><author>江边之鸟</author><pubDate>Mon, 02 Mar 2009 04:20:00 GMT</pubDate><guid>http://www.cppblog.com/riverbird/archive/2009/03/02/76676.html</guid><wfw:comment>http://www.cppblog.com/riverbird/comments/76676.html</wfw:comment><comments>http://www.cppblog.com/riverbird/archive/2009/03/02/76676.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/riverbird/comments/commentRss/76676.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/riverbird/services/trackbacks/76676.html</trackback:ping><description><![CDATA[live writer功能非常强大,应该让他来做更多的事情.<br /><br />  <!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="/logs/35860142.html">08年一定要去趟黄山</a> 2008-02-02</div><div><a href="/logs/35860147.html">China译成密码</a> 2007-03-07</div><div><a href="/logs/35860156.html">C语言的主要用途</a> 2007-03-07</div><div><a href="/logs/35860157.html">C语言的特点</a> 2007-03-07</div><div><a href="/logs/35860162.html">综合英语一练习题一</a> 2007-02-28</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Friverbird.blogbus.com%2Flogs%2F35937584.html&title=%E4%BA%86%E8%A7%A3%E4%B8%80%E4%B8%8Bwindows+live+writer">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://icity.cn" target="_blank">《城客》：第一本中文互动杂志！</a></b></div><br /><br /><br>文章来源:<a href='http://riverbird.blogbus.com/logs/35937584.html'>http://riverbird.blogbus.com/logs/35937584.html</a><img src ="http://www.cppblog.com/riverbird/aggbug/76676.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/riverbird/" target="_blank">江边之鸟</a> 2009-03-02 12:20 <a href="http://www.cppblog.com/riverbird/archive/2009/03/02/76676.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]今天的好看簿怎么了</title><link>http://www.cppblog.com/riverbird/archive/2009/03/01/76677.html</link><dc:creator>江边之鸟</dc:creator><author>江边之鸟</author><pubDate>Sun, 01 Mar 2009 06:21:00 GMT</pubDate><guid>http://www.cppblog.com/riverbird/archive/2009/03/01/76677.html</guid><wfw:comment>http://www.cppblog.com/riverbird/comments/76677.html</wfw:comment><comments>http://www.cppblog.com/riverbird/archive/2009/03/01/76677.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/riverbird/comments/commentRss/76677.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/riverbird/services/trackbacks/76677.html</trackback:ping><description><![CDATA[今天的好看簿好像出问题了，总是无法提交内容，真是让人郁闷。blogbus看起来是不错的东西，好像总部在杭州，搬家功能让人喜欢。<br /><br /><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="/logs/35989096.html">今天的工作情况</a> 2009-03-03</div><div><a href="/logs/35860152.html">用GCC编译C程序</a> 2007-03-07</div><div><a href="/logs/35860154.html">C,Very Good</a> 2007-03-07</div><div><a href="/logs/35860155.html">C语言的构成</a> 2007-03-07</div><div><a href="/logs/35860160.html">《湘夫人》一诗中湘君的思想感情发展的轨迹</a> 2007-02-28</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Friverbird.blogbus.com%2Flogs%2F35898677.html&title=%E4%BB%8A%E5%A4%A9%E7%9A%84%E5%A5%BD%E7%9C%8B%E7%B0%BF%E6%80%8E%E4%B9%88%E4%BA%86">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://icity.cn" target="_blank">《城客》：第一本中文互动杂志！</a></b></div><br /><br /><br>文章来源:<a href='http://riverbird.blogbus.com/logs/35898677.html'>http://riverbird.blogbus.com/logs/35898677.html</a><img src ="http://www.cppblog.com/riverbird/aggbug/76677.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/riverbird/" target="_blank">江边之鸟</a> 2009-03-01 14:21 <a href="http://www.cppblog.com/riverbird/archive/2009/03/01/76677.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]张阳阳坐火车</title><link>http://www.cppblog.com/riverbird/archive/2009/02/28/76678.html</link><dc:creator>江边之鸟</dc:creator><author>江边之鸟</author><pubDate>Sat, 28 Feb 2009 09:43:00 GMT</pubDate><guid>http://www.cppblog.com/riverbird/archive/2009/02/28/76678.html</guid><wfw:comment>http://www.cppblog.com/riverbird/comments/76678.html</wfw:comment><comments>http://www.cppblog.com/riverbird/archive/2009/02/28/76678.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/riverbird/comments/commentRss/76678.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/riverbird/services/trackbacks/76678.html</trackback:ping><description><![CDATA[今天儿子随着他的妈妈从西安到杭州过来，这是他妈妈在火车上给他拍的照片，头发长的挺快的，小家伙做的也很稳当。亲爱的宝贝，明天爸爸就可以见到你了，呜哦!
<br /><br />
<br /><br /><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="/logs/35991331.html">奇怪的消息</a> 2009-03-03</div><div><a href="/logs/35937634.html">如何利用Window Live Writer发布日志？</a> 2009-03-02</div><div><a href="/logs/35898677.html">今天的好看簿怎么了</a> 2009-03-01</div><div><a href="/logs/35860148.html">C语言中++运算符题</a> 2007-03-07</div><div><a href="/logs/35860161.html">理解《诗经.小雅.采薇》的思想内容</a> 2007-02-28</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Friverbird.blogbus.com%2Flogs%2F35859794.html&title=%E5%BC%A0%E9%98%B3%E9%98%B3%E5%9D%90%E7%81%AB%E8%BD%A6">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://icity.cn" target="_blank">《城客》：第一本中文互动杂志！</a></b></div><br /><br /><br>文章来源:<a href='http://riverbird.blogbus.com/logs/35859794.html'>http://riverbird.blogbus.com/logs/35859794.html</a><img src ="http://www.cppblog.com/riverbird/aggbug/76678.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/riverbird/" target="_blank">江边之鸟</a> 2009-02-28 17:43 <a href="http://www.cppblog.com/riverbird/archive/2009/02/28/76678.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]所想</title><link>http://www.cppblog.com/riverbird/archive/2008/11/12/76679.html</link><dc:creator>江边之鸟</dc:creator><author>江边之鸟</author><pubDate>Tue, 11 Nov 2008 16:56:00 GMT</pubDate><guid>http://www.cppblog.com/riverbird/archive/2008/11/12/76679.html</guid><wfw:comment>http://www.cppblog.com/riverbird/comments/76679.html</wfw:comment><comments>http://www.cppblog.com/riverbird/archive/2008/11/12/76679.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/riverbird/comments/commentRss/76679.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/riverbird/services/trackbacks/76679.html</trackback:ping><description><![CDATA[<br><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://riverbird.blogbus.com/logs/35860139.html">说说兰州的朋友－小赵</a> 2008-05-29</div><div><a href="http://riverbird.blogbus.com/logs/35860140.html">我看&amp;#60;&amp;#60;钢铁侠&amp;#62;&amp;#62;</a> 2008-05-25</div><div><a href="http://riverbird.blogbus.com/logs/35860141.html">我的相册上线了</a> 2008-02-28</div><div><a href="http://riverbird.blogbus.com/logs/35860142.html">08年一定要去趟黄山</a> 2008-02-02</div><div><a href="http://riverbird.blogbus.com/logs/35860143.html">08年买架好的数码相机</a> 2008-02-02</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Friverbird.blogbus.com%2Flogs%2F35860313.html&title=%E6%89%80%E6%83%B3">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://icity.cn" target="_blank">《城客》：第一本中文互动杂志！</a></b></div><br /><br /><br>文章来源:<a href='http://riverbird.blogbus.com/logs/35860313.html'>http://riverbird.blogbus.com/logs/35860313.html</a><img src ="http://www.cppblog.com/riverbird/aggbug/76679.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/riverbird/" target="_blank">江边之鸟</a> 2008-11-12 00:56 <a href="http://www.cppblog.com/riverbird/archive/2008/11/12/76679.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>python模块之threading: 在python中使用多线程</title><link>http://www.cppblog.com/riverbird/archive/2007/12/26/39704.html</link><dc:creator>江边之鸟</dc:creator><author>江边之鸟</author><pubDate>Wed, 26 Dec 2007 10:04:00 GMT</pubDate><guid>http://www.cppblog.com/riverbird/archive/2007/12/26/39704.html</guid><wfw:comment>http://www.cppblog.com/riverbird/comments/39704.html</wfw:comment><comments>http://www.cppblog.com/riverbird/archive/2007/12/26/39704.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/riverbird/comments/commentRss/39704.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/riverbird/services/trackbacks/39704.html</trackback:ping><description><![CDATA[python是支持多线程的，并且是native的线程。主要是通过thread和threading这两个模块来实现的。thread是比较底层的模
块，threading是对thread做了一些包装的，可以更加方便的被使用。这里需要提一下的是python对线程的支持还不够完善，不能利用多
CPU，但是下个版本的python中已经考虑改进这点，让我们拭目以待吧。<br>&nbsp;&nbsp;&nbsp;
threading模块里面主要是对一些线程的操作对象化了，创建了叫Thread的class。一般来说，使用线程有两种模式，一种是创建线程要执行的
函数，把这个函数传递进Thread对象里，让它来执行；另一种是直接从Thread继承，创建一个新的class，把线程执行的代码放到这个新的
class里。我们来看看这两种做法吧。<br><br>
<div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: #e6e6e6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 95%;">
<div><span style="color: #008000;">#</span><span style="color: #008000;">-*-&nbsp;encoding:&nbsp;gb2312&nbsp;-*-</span><span style="color: #008000;"><br></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;string,&nbsp;threading,&nbsp;time<br><br></span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;thread_main(a):<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">global</span><span style="color: #000000;">&nbsp;count,&nbsp;mutex<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;获得线程名</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;threadname&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;threading.currentThread().getName()<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;x&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;xrange(0,&nbsp;int(a)):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;取得锁</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mutex.acquire()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;count&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;释放锁</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mutex.release()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;threadname,&nbsp;x,&nbsp;count<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;time.sleep(</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;main(num):<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">global</span><span style="color: #000000;">&nbsp;count,&nbsp;mutex<br>&nbsp;&nbsp;&nbsp;&nbsp;threads&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;[]<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;count&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;创建一个锁</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;mutex&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;threading.Lock()<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;先创建线程对象</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;x&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;xrange(0,&nbsp;num):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threads.append(threading.Thread(target</span><span style="color: #000000;">=</span><span style="color: #000000;">thread_main,&nbsp;args</span><span style="color: #000000;">=</span><span style="color: #000000;">(</span><span style="color: #000000;">10</span><span style="color: #000000;">,)))<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;启动所有线程</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;t&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;threads:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t.start()<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;主线程中等待所有子线程退出</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;t&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;threads:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t.join()&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">__name__</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">__main__</span><span style="color: #800000;">'</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;num&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;创建4个线程</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;main(</span><span style="color: #000000;">4</span><span style="color: #000000;">)</span></div>
</div>
<br>上面的就是第一种做法，这种做法是很常见的，下面是另一种，曾经使用过Java的朋友应该很熟悉这种模式：<br><br>
<div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: #e6e6e6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 95%;">
<div><span style="color: #008000;">#</span><span style="color: #008000;">-*-&nbsp;encoding:&nbsp;gb2312&nbsp;-*-</span><span style="color: #008000;"><br></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;threading<br></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;time<br><br></span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Test(threading.Thread):<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">__init__</span><span style="color: #000000;">(self,&nbsp;num):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threading.Thread.</span><span style="color: #800080;">__init__</span><span style="color: #000000;">(self)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self._run_num&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;num<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;run(self):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">global</span><span style="color: #000000;">&nbsp;count,&nbsp;mutex<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadname&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;threading.currentThread().getName()<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;x&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;xrange(0,&nbsp;int(self._run_num)):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mutex.acquire()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;count&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mutex.release()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;threadname,&nbsp;x,&nbsp;count<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;time.sleep(</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br><br></span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">__name__</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">__main__</span><span style="color: #800000;">'</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">global</span><span style="color: #000000;">&nbsp;count,&nbsp;mutex<br>&nbsp;&nbsp;&nbsp;&nbsp;threads&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;[]<br>&nbsp;&nbsp;&nbsp;&nbsp;num&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;count&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;创建锁</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;mutex&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;threading.Lock()<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;创建线程对象</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;x&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;xrange(0,&nbsp;num):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threads.append(Test(</span><span style="color: #000000;">10</span><span style="color: #000000;">))<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;启动线程</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;t&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;threads:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t.start()<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;等待子线程结束</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;t&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;threads:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t.join()&nbsp; <br></span></div>
</div><img src ="http://www.cppblog.com/riverbird/aggbug/39704.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/riverbird/" target="_blank">江边之鸟</a> 2007-12-26 18:04 <a href="http://www.cppblog.com/riverbird/archive/2007/12/26/39704.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Groovy-An agile dynamic language for the Java Platform</title><link>http://www.cppblog.com/riverbird/archive/2007/12/26/39700.html</link><dc:creator>江边之鸟</dc:creator><author>江边之鸟</author><pubDate>Wed, 26 Dec 2007 09:54:00 GMT</pubDate><guid>http://www.cppblog.com/riverbird/archive/2007/12/26/39700.html</guid><wfw:comment>http://www.cppblog.com/riverbird/comments/39700.html</wfw:comment><comments>http://www.cppblog.com/riverbird/archive/2007/12/26/39700.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/riverbird/comments/commentRss/39700.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/riverbird/services/trackbacks/39700.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/riverbird/archive/2007/12/26/39700.html'>阅读全文</a><img src ="http://www.cppblog.com/riverbird/aggbug/39700.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/riverbird/" target="_blank">江边之鸟</a> 2007-12-26 17:54 <a href="http://www.cppblog.com/riverbird/archive/2007/12/26/39700.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>三百个好用又免费的软件名单</title><link>http://www.cppblog.com/riverbird/archive/2007/12/26/39697.html</link><dc:creator>江边之鸟</dc:creator><author>江边之鸟</author><pubDate>Wed, 26 Dec 2007 09:35:00 GMT</pubDate><guid>http://www.cppblog.com/riverbird/archive/2007/12/26/39697.html</guid><wfw:comment>http://www.cppblog.com/riverbird/comments/39697.html</wfw:comment><comments>http://www.cppblog.com/riverbird/archive/2007/12/26/39697.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/riverbird/comments/commentRss/39697.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/riverbird/services/trackbacks/39697.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/riverbird/archive/2007/12/26/39697.html'>阅读全文</a><img src ="http://www.cppblog.com/riverbird/aggbug/39697.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/riverbird/" target="_blank">江边之鸟</a> 2007-12-26 17:35 <a href="http://www.cppblog.com/riverbird/archive/2007/12/26/39697.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在VC中如何结束进程和启动新进程？</title><link>http://www.cppblog.com/riverbird/archive/2007/12/26/39696.html</link><dc:creator>江边之鸟</dc:creator><author>江边之鸟</author><pubDate>Wed, 26 Dec 2007 09:34:00 GMT</pubDate><guid>http://www.cppblog.com/riverbird/archive/2007/12/26/39696.html</guid><wfw:comment>http://www.cppblog.com/riverbird/comments/39696.html</wfw:comment><comments>http://www.cppblog.com/riverbird/archive/2007/12/26/39696.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/riverbird/comments/commentRss/39696.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/riverbird/services/trackbacks/39696.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/riverbird/archive/2007/12/26/39696.html'>阅读全文</a><img src ="http://www.cppblog.com/riverbird/aggbug/39696.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/riverbird/" target="_blank">江边之鸟</a> 2007-12-26 17:34 <a href="http://www.cppblog.com/riverbird/archive/2007/12/26/39696.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IronPython学习 之hello word.</title><link>http://www.cppblog.com/riverbird/archive/2007/12/26/39646.html</link><dc:creator>江边之鸟</dc:creator><author>江边之鸟</author><pubDate>Wed, 26 Dec 2007 01:17:00 GMT</pubDate><guid>http://www.cppblog.com/riverbird/archive/2007/12/26/39646.html</guid><wfw:comment>http://www.cppblog.com/riverbird/comments/39646.html</wfw:comment><comments>http://www.cppblog.com/riverbird/archive/2007/12/26/39646.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/riverbird/comments/commentRss/39646.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/riverbird/services/trackbacks/39646.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/riverbird/archive/2007/12/26/39646.html'>阅读全文</a><img src ="http://www.cppblog.com/riverbird/aggbug/39646.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/riverbird/" target="_blank">江边之鸟</a> 2007-12-26 09:17 <a href="http://www.cppblog.com/riverbird/archive/2007/12/26/39646.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>python 脚本作为Windows服务启动</title><link>http://www.cppblog.com/riverbird/archive/2007/12/25/39582.html</link><dc:creator>江边之鸟</dc:creator><author>江边之鸟</author><pubDate>Tue, 25 Dec 2007 07:12:00 GMT</pubDate><guid>http://www.cppblog.com/riverbird/archive/2007/12/25/39582.html</guid><wfw:comment>http://www.cppblog.com/riverbird/comments/39582.html</wfw:comment><comments>http://www.cppblog.com/riverbird/archive/2007/12/25/39582.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/riverbird/comments/commentRss/39582.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/riverbird/services/trackbacks/39582.html</trackback:ping><description><![CDATA[如果我们想让系统启动的时候就执行某个程序，windows系统和unix系统是不一样的，对于unix只需要将要执行的命令放到
rc.local中，系统重新启动的时候就可以加载了。windows就麻烦多了，如果你将程序放到启动组中，只有输入了密码后，程序才被执行，如果想在
系统一启动的时候就执行程序，必须使用nt服务。
<br>python下如何使用nt服务，其实很简单。
<br>下载python的win32支持。我使用的是：pywin32-202.win32-py2.3.exe安装好后就可以来写我们的服务了。
<br>我们先来建立一个空的服务，建立test1.py这个文件，并写入如下代码:
<br>
<br>#&nbsp;-*-&nbsp;coding:&nbsp;cp936&nbsp;-*-
<br>import&nbsp;win32serviceutil
<br>import&nbsp;win32service
<br>import&nbsp;win32event
<br>
<br>class&nbsp;test1(win32serviceutil.ServiceFramework):
<br>&nbsp;&nbsp;&nbsp;&nbsp;_svc_name_&nbsp;=&nbsp;"test_python"
<br>&nbsp;&nbsp;&nbsp;&nbsp;_svc_display_name_&nbsp;=&nbsp;"test_python"
<br>&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;__init__(self,&nbsp;args):
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;win32serviceutil.ServiceFramework.__init__(self,&nbsp;args)
<br><br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.hWaitStop&nbsp;=&nbsp;win32event.CreateEvent(None,&nbsp;0,&nbsp;0,&nbsp;None)
<br>
<br>&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;SvcStop(self):
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;先告诉SCM停止这个过程
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;设置事件
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;win32event.SetEvent(self.hWaitStop)
<br>
<br>&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;SvcDoRun(self):
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;等待服务被停止
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;win32event.WaitForSingleObject(self.hWaitStop,&nbsp;win32event.INFINITE)
<br>
<br>if&nbsp;__name__=='__main__':
<br>&nbsp;&nbsp;&nbsp;&nbsp;win32serviceutil.HandleCommandLine(test1)<br>
<br>这里注意，如果你需要更改文件名，比如将win32serviceutil.HandleCommandLine(test1)中的test1更改为你的文件名，同时class也需要和你的文件名一致，否则会出现服务不能启动的问题。
<br>在命令窗口执行，test1.py可以看到帮助提示
<br>
<br>C:\&gt;test1.py
<br>Usage:&nbsp;'test1.py&nbsp;[options]&nbsp;install|update|remove|start&nbsp;[...]|stop|restart&nbsp;[...]|
<br>debug&nbsp;[...]'
<br>Options&nbsp;for&nbsp;'install'&nbsp;and&nbsp;'update'&nbsp;commands&nbsp;only:
<br>&nbsp;--username&nbsp;domain\username&nbsp;:&nbsp;The&nbsp;Username&nbsp;the&nbsp;service&nbsp;is&nbsp;to&nbsp;run&nbsp;under
<br>&nbsp;--password&nbsp;password&nbsp;:&nbsp;The&nbsp;password&nbsp;for&nbsp;the&nbsp;username
<br>&nbsp;--startup&nbsp;[manual|auto|disabled]&nbsp;:&nbsp;How&nbsp;the&nbsp;service&nbsp;starts,&nbsp;default&nbsp;=&nbsp;manual
<br>&nbsp;--interactive&nbsp;:&nbsp;Allow&nbsp;the&nbsp;service&nbsp;to&nbsp;interact&nbsp;with&nbsp;the&nbsp;desktop.
<br>
<br>C:\&gt;<br>
<br>安装我们的服务
<br>
<br>[code:1:05b7353f1c]C:\&gt;test1.py&nbsp;install
<br>Installing&nbsp;service&nbsp;test_python&nbsp;to&nbsp;Python&nbsp;class&nbsp;C:\test1.test1
<br>Service&nbsp;installed
<br>
<br>C:\&gt;<br>
<br>我们就可以用命令或者在控制面板-》管理工具-》服务中管理我们的服务了。在服务里面可以看到test_python这个服务，虽然这个服务什么都不做，但能启动和停止他。<img src ="http://www.cppblog.com/riverbird/aggbug/39582.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/riverbird/" target="_blank">江边之鸟</a> 2007-12-25 15:12 <a href="http://www.cppblog.com/riverbird/archive/2007/12/25/39582.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>