从实际工作经历中说说我选择python的原因
这两天看到有人问为什么好多大公司为什么选择PYTHON,大公司有大公司的考虑,这里只是说说我从实际工作中碰到问题解决后的选择.
呵,呵,我是蛮羡慕RUBY有个很流行的WEB开发框架,也挺有兴趣学习,WEB敏捷开发之道的一二版和programing ruby第2版也买了,可惜因为在的公司进行的都是企业开发,基本上都用JAVA,不能实际应用RAILS,那就当个人兴趣爱好学习了.
去年有次我负责的一个项目需要处理几个文本文件出话单和联通对帐,每个话单文件的处理条数大概是150到200万条,那时候对ruby也有些了解了,脚本语言上手还是挺快的,就用RUBY写了个小程序,花了天把完成任务,记不清当时为什么又用PYTHON来写了个程序来比较,可能是因为这两个脚本语言都比较有名,想多了解比较下的原因吧.
这个程序牵涉到的就是字符串比较和文件读写
.(惭愧惭愧,处理时间有差距,但没有我以前说的那么巨大,因为我写的RUBY代码不够高效,有同学改进后的代码提升到3倍以内,详见后帖)
跑程序的机子是台IBM的X60,使用的CPU是T5600,1.8G的,内存是2G,硬盘100G,操作系统是 XP+sp3 , ruby 是一键安装的 1.8.6 吧(今天装的是 1.8.6-27) , python 当时是 2.5.2 今天我用的是(2.6.2),因为准备写这篇帖子,原来的话单文件又比较大,上百M和牵涉到手机号码,就写了个python程序,来生成测试用的话单.
我当时是先写了RUBY,然后按RUBY的写法,又再写了个PYTHON,代码几乎都是一模一样的,也没有考虑什么优化啊编程技巧啊这些,数据需要怎么处理,就用语言提供的数据类型和进行最基本的操作,反正只是个小程序,用了就完了,而且写个脚本程序都要搞很高深的编程技巧,优化技巧,这不就有些为难不是专业人士,就想用脚本程序解决下问题的人了吗?
今天的测试结果:
测试120万条记录,PYTHON跑了40多秒.
200万记录的测试,python跑了55秒.
我平时工作中会经常需要写小程序解决问题,经常牵涉到全省手机号码的处理,一处理就是几十上百万的记录条数,你要说RUBY慢到我不能忍受的地步,也不至于,不过毕竟都喜欢跑得快的程序不是,而且ruby最吸引我的WEB开发,因为工作关系,不能轻易用,平时还是写些小程序处理网络,处理文件用得多些.
所以我最后还是选择了PYTHON,web开发因为工作原因还是用JAVA.
程序代码就贴在下面,压缩包里是所有的相关源文件
执行 MakeTestData.py 指定数字 生成指定数字条数的话单,比如 MakeTestDagta.py 1200000 就生成120万条数据,里面的数据没有任何意义,就是为了达到测试量的数据而已,为了方便,发送和接收数据都设置为指定数据的一半.
然后执行 RunPyTest.bat 或 RunRbTest.bat 进行相关的运行测试,运行完后报告运行时间.
我是希望有人能指点为什么我写的ruby程序比python慢了挺多的,不说又会换回ruby,长长经验也是个好事情嘛...
我刚才又测试了一下,100万条数据,环境如上,跑了10次,结果还是一样,100万条数据的测试结果python 27,要说明下大部分ruby的时间是花在了写结果文件上,看来是IO读写拖了后腿,内存之中的运行应该差不多?(有时间再比较下)不过我这个程序正好碰到了大量的文件读写,我的标题应该改下了,只是有一定的差距...
去掉最后的文件写入,差异也是比较巨大的,PYTHON 10 秒, RUBY 80 秒..测试记录是100万条(
去掉最后的文件写入后的代码比较简单,还是有这个差异,要继续寻找答案,呵...)
好象也不算是拖后腿,ruby python 都是用了2/3的时间来写结果文件
我注释掉rb中对format_data的调用,直接赋予'',rb后面的写文件就很快了,那就是字符串操作...?
下面是python处理的代码:
数据处理要求是这样的,分3大步:
1.有一个等待发送状态报告文件来匹配数据的文件,里面包含得有
移动发往联通
wait-status.csv 中第一个字段为3
和
联通发往移动
wait-status.csv 中第一个字段为4
的所有记录
首先读取等待状态报告文件中的数据到哈希表中去,根据第一个字段为3或者4取不同的字段作为key放入到2个不同的(发送和接收)哈希表中
2.然后读取状态报告文件 status.csv 的每一行,根据第一个字段作为KEY尝试去取2个哈希表中的数据,
取得到数据就根据是从哪个哈希表中取出的分别放到2个不同的数组(发送和接收)中去
取不到就丢弃
3.然后把这2个不同的数组中的每条数据转换组合后写到文件中(发送GMO,接收GMT)去就OK了
分享到:
相关推荐
这个压缩包中的"Python项目开发实战 (源代码)"提供了丰富的实例,让你能够深入学习Python的实际应用。以下是基于这些资源可能涵盖的一些核心知识点: 1. **基础语法**:Python的基础语法包括变量、数据类型(如...
Python数据分析实战源代码是针对那些想要深入理解和应用Python进行数据处理和分析的初学者和专业人士的宝贵资源。这个综合性的教程共分为六个章节,每个章节都涵盖了数据分析过程中的一个重要环节,确保学习者能够...
"Python Web开发实录源代码"是针对这一主题的学习资料,通常包含一系列的示例项目和练习,旨在帮助开发者通过实践掌握Web开发的关键概念和技术。 首先,Python作为服务器端编程语言,其简洁的语法和强大的库支持...
《Python植物大战僵尸源代码解析》 植物大战僵尸(Plants vs. Zombies)是一款深受玩家喜爱的策略塔防游戏,而Python版的植物大战僵尸源代码则是编程爱好者学习游戏开发的绝佳实例。在这个项目中,开发者用Python...
python贪吃蛇完整代码,python贪吃蛇完整的源代码资料.zippython贪吃蛇完整代码,python贪吃蛇完整的源代码资料.zippython贪吃蛇完整代码,python贪吃蛇完整的源代码资料.zippython贪吃蛇完整代码,python贪吃蛇完整...
通过深入研究"Python编程从入门到实践"的源代码文件,读者不仅可以巩固Python基础知识,还能逐步提升解决实际问题的能力,为今后的编程生涯奠定坚实基础。在学习过程中,读者应结合书中的讲解,动手运行代码,调试...
《Python我的世界小游戏源代码》是一款基于Python编程语言和Pygame库开发的模拟"我的世界"风格的游戏。Pygame是Python的一个扩展库,专门用于创建2D游戏和多媒体应用程序。这个项目展示了如何利用Python和Pygame来...
Python是一种高级编程语言,以其简洁明了的语法和强大的功能深受程序员喜爱,是初学者入门编程的理想选择。"Python学习手册源代码"是一份宝贵的资源,它提供了丰富的实例和实践练习,帮助用户深入理解Python语言的...
这个源代码集合包括了从基础语法到高级特性的各种示例,旨在帮助初学者逐步掌握Python编程。 在Python的基础部分,教程可能涵盖以下内容: 1. **变量与数据类型**:包括整型、浮点型、字符串、布尔型等基本数据...
Python超级玛丽完整版源代码是基于Python编程语言实现的一个经典游戏项目,它通过pygame库来构建游戏场景,模拟了我们熟知的《超级马里奥》游戏。pygame是Python中的一个开源游戏开发模块,提供了丰富的图形、音频和...
**Python连连看小游戏源代码详解** 在编程领域,制作小游戏是一种常见的学习和实践方式,而“连连看”作为一款广受欢迎的休闲游戏,其Python实现更是吸引了许多初级和中级开发者。这个项目是基于Python语言构建的,...
Python开发课程设计高校教务系统源代码+数据库Python开发课程设计高校教务系统源代码+数据库Python开发课程设计高校教务系统源代码+数据库Python开发课程设计高校教务系统源代码+数据库Python开发课程设计高校教务...
【Python 飞机大战源代码】是一款基于Python编程语言实现的简单游戏,它展示了Python在游戏开发中的应用。这个游戏的源代码可以帮助开发者了解游戏逻辑、图形渲染以及事件处理等基本概念。 首先,Python飞机大战的...
用Python编中国结源代码,中国结代表着团结幸福平安,特别是在民间,它精致的做工深受大众的喜爱
Python 2.7.2 源代码是Python编程语言的一个重要版本的原始实现,它为程序员和开发者提供了深入理解Python内部工作原理的机会。对于想要探究Python如何执行各种操作、优化代码性能或甚至开发自己的Python解释器的人...
机器学习python源代码
Python我的世界小游戏源代码,我的世界小游戏使用方法: 移动 前进:W,后退:S,向左:A,向右:D,环顾四周:鼠标,跳起:空格键,切换飞行模式:Tab; 选择建筑材料 砖:1,草:2,沙子:3,删除建筑:鼠标左键单击...
首先,让我们从标题"深人Python源代码"开始。这通常指的是对Python标准库或Python语言本身的详细解析,通过阅读和分析源代码,我们可以了解到Python设计的哲学,以及如何实现各种功能。深入理解源码有助于我们成为更...
通过阅读《Python源代码剖析》这样的文章,开发者能够更深入地理解Python的工作方式,提升编程技能,解决实际问题时也能更加得心应手。同时,对于想要贡献Python开源社区或编写Python扩展模块的开发者来说,这种深入...
《Python编程:从入门到实践》是一本广受欢迎的Python编程教材,旨在帮助初学者掌握Python语言的基础知识,并...同时,这些项目也可以作为进一步学习和探索Python相关领域的起点,比如机器学习、数据科学或者网络编程。