Re: [请益] 请问Python在业界都用来写什么居多?

楼主: Lordaeron (Terry)   2014-10-11 06:24:01
※ 引述《yauhh (哟)》之铭言:
: ※ 引述《OoShiunoO (机机勋)》之铭言:
: : 小弟刚接触Python一个月,主要是用它的机器学习套件来作资料分析
: : 用了之后感觉是很好用的一种语言
: : 但是似乎有一种感觉,它不算是一种用来写大型程式的语言
: : 感觉它好像是用来做小工作 小事情的一种语言
: : 所以小弟好奇,在业界,大家都是用Python来干嘛比较多呢..?
: 想延伸这个问题。你觉得什么样的语言才叫做“用来写大型程式的语言”?
: 以前只有 Fortran 的年代,只有 Algol60 的年代,小的,大的都用那个写。
: 我想问这个问题,想法是,语言要呈现什么样的特征,你会觉得它是个大器的东西。
: 至于执行的速度,应该要排除在语言的选择之外。
: 看到前面的讨论,都说 Python 写很快但是有效能的状况。
: 但是,我觉得这样想是很偏的。
: 你来尝试 Python ,不是因为考虑 C 的效能,但却
: 可能是考虑到 C 语言本身是不是很好写。
: 但是, Python 写出来的东西 OK 了,
: 后来在大量使用的时候遇到效能爆炸的情况时,
: 为什么却没有想想,在同样要触发效能爆炸的情况下,也许是大量资料或大量使用,
: C 有多少比较好?
: 也许只是你不知道如何去调整好 Python 的效能啊,是吧。
Script language 适合作验证, 不适合作产品, 撑不起量.
正如作image processing 的,很多人爱用matlab, 但该不会有人拿它作产品吧?
更别说OpenCV拿来当底的(大陆就干过了)一样慢.
而处理大量(GB以上)资料以python 要快, 还望你来一篇教学一下.
以下转来的(加了点修改)
我很喜欢用python,用python处理数据是家常便饭,从事的工作涉及nlp,
算法,推荐,数据挖掘,数据清洗,数据量级从几十k到几T不等,我来说说吧
百万级别数据是小数据,python处理起来不成问题,python处理数据还是有些问题的
Python处理大数据的劣势:
1. python线程有gil,通俗说就是多线程的时候只能在一个核上跑,
浪费了多核服务器。在一种常见的场景下是要命的:并发单元之
间有巨大的数据共享或者共用(例如大dict),多进程会导致内存吃紧
,多线程则解决不了数据共享的问题,单独的写一个进程之间负责维护
读写这个数据不仅效率不高而且麻烦
2. python执行效率不高,在处理大数据的时候,效率不高,这是真的,
pypy(一个jit的python解释器,可以理解成脚本语言加速执行的东西)能
够提高很大的速度(可以快10倍),但是pypy不支持很多python经典的包,
例如numpy
3. 绝大部分的大公司,用java处理大数据不管是环境也好,积累也好,
都会好很多
Python处理数据的优势(不是处理大数据):
1. 异常快捷的开发速度,代码量巨少
2. 丰富的数据处理包,不管正则也好,html解析啦,xml解析啦,用起来非常方便
3. 内部类型使用成本巨低,不需要额外怎么操作(java,c++用个map都很费劲)
4. 公司中,很大量的数据处理工作工作是不需要面对非常大的数据的
5. 巨大的数据不是语言所能解决的,需要处理数据的框
架(hadoop, mpi。。。。)虽然小众,但是python还是有
处理大数据的框架的,或者一些框架也支持python
6. 编码问题处理起来太太太方便了
综上所述:
1. python可以处理大数据
2. python处理大数据不一定是最优的选择
3. python和其他语言(公司主推的方式)并行使用是非常不错的选择
4. 因为开发速度,你如果经常处理数据,而且喜欢linux终端,而且
经常处理不大的数据(100m一下),最好还是学一下python
python数据处理的包:
1. 自带正则包, 文本处理足够了
2. cElementTree, lxml 默认的xml速度在数据量过大的情况下不足
3. beautifulsoup 处理html
4. hadoop(可以用python) 并行处理,支持python写的map reduce,足够了,
顺便说一下阿里巴巴的odps,和hadoop一样的东西,支持python写的udf,
嵌入到sql语句中
5. numpy, scipy, scikit-learn 数值计算,数据挖掘
6. dpark(搬楼上的答案)类似hadoop一样的东西
1,2,3,5是处理文本数据的利器(python不就处理文本数据方便嘛),
4,6是并行计算的框架(大数据处理的效率在于良好的分布计算逻辑,而不是什么语言)
暂时就这些,最好说一个方向,否则不知道处理什么样的数据也不好推荐包,
所以没有头绪从哪里开始介绍这些包
作者: dlikeayu (太阳拳vs野球拳)   2014-10-11 08:32:00
想知道为何国外或中国那边在算fb,twitter等巨量分析都还是用python居多?那么最好的选择又是什么?
作者: z101924512   2014-10-11 09:23:00
python + cpython?
作者: Wush978 (拒看低质媒体)   2014-10-11 10:04:00
数据分析的东西, python只是皮, c++才是骨
作者: yauhh (小y宝贝)   2014-10-11 10:06:00
楼上说语言是皮真是太傻了,难道你说英语都是求皮毛工夫吗一个语言是皮或是骨,都是看它应用的人、应用场合以及效用英语,在台湾的夜店,那就是屁话一堆。英语,用在外交辞令、商业合约以及职场e-mail,则是大器。
作者: Wush978 (拒看低质媒体)   2014-10-11 10:24:00
https://github.com/guestwalk/kaggle-2014-criteo这是最近预测广告点击比赛,释出的原始码c++是拿来实作核心算法, python再拿来包外层备注一下, 上面的原始码的团队拿到这次比赛的冠军而导致他们能拿到冠军的奥秘, 除了知识之外, c++实作力很更正: c++的部分才是夺冠关键。至于python的部分则偏向在使用的方便性。现在类似的手法很常见: 核心用c++, 使用用python。这样就能结合两种工具的长处。
作者: mingtai1 (绿豆嘉义人)   2014-10-11 10:37:00
脚本+编译语言并用能兼顾效率跟弹性,Lua几乎也都这样玩
作者: hungys (hungys)   2014-10-11 10:54:00
如果单纯拿来写 REST API,不晓得效能会差多少呢,有很多公司这样用吗?
作者: mingtai1 (绿豆嘉义人)   2014-10-11 11:13:00
有,我们以前有这样用.服务器计算量少 大多在等DB写入像开心农场那种,瓶颈多在DB架构跟写入,server计算量不大
作者: lachtchlee (nymph)   2014-10-11 11:31:00
原po好像都在读对岸的书 ?
作者: ohb (好胜的命运是失落)   2014-10-11 12:09:00
如果产品的内容是大数据分析 python的确不适合 但又不是只有一种产品XD 另外 就算python不能做大数据的coreperipheral 的使用还是比比皆是
作者: Wush978 (拒看低质媒体)   2014-10-11 15:02:00
其实对大多数programmer来说,大数据不是issue某年中研院办的big data forum中,google的speaker建议大家注重big value, 而不是big data找寻价值比较需要快速的programming, 这是python的强项
楼主: Lordaeron (Terry)   2014-10-11 15:19:00
十来年前,满街都PERL, PYTHON不知在干嘛, 现在古狗PROMOTE 一下,就变成满街PYTHON,PERL不知去哪.要快速programming,当然是找script language.
作者: recorriendo (孟新)   2014-10-12 02:30:00
perl写出来的东西太不美观 python看起来比较干净舒爽
作者: pandakuo (panda)   2014-10-12 07:11:00
PERL写完隔天只有上帝懂你在写啥
作者: s25g5d4 (function(){})()   2014-10-12 18:01:00
只有我觉得英语在夜店可以钓到 CCR 吗...(离题
楼主: Lordaeron (Terry)   2014-10-13 10:59:00
这么惨,哪PERL当年在红什么?原来当年的都是上帝?

Links booklink

Contact Us: admin [ a t ] ucptt.com