以前的雇主,怎么也是3-4万人大厂,一个核心系统python写的:
- 使用各类数据库实时维护的人类最完整某类型文件库,含数亿文档的数十亿文档版本
- 各类传统的分析工具、估价、OCR了的文档的错误估算等等等
- 各类查询、搜索、阅读、手工分组分类、标注工具等等等
- 机器学习的文档分类,全套自己做的,算法部分C++写的,别的都是Python
- 对接各类通用或自研大数据分析的接口,对接公司别的平台的各类接口
- 各类爬虫,爬整个互联网,在互联网上找出所有相关的信息,匹配起来
我全程参与,负责1/4/5/6部分,最保守计算,全套50万行python这个量级肯定有的
做了好几年,离职回国才开始看zhihu,第一次在zhihu上听说python不适合写大项目。当然,也有可能各位口中的大项目都是那种好几百万行上千万行的,那种我倒真没有经验。
我不会说python怎么怎么好,它问题很多,比如:
- 慢,真的很慢
- 因为慢,很多时候得花时间去做其它语言看起来无谓的“优化”
- GIL这种几十年不变的东西,让人对Python社区是否有诚意改进表示怀疑
- Unicode支持烂
- Python2/3的分裂是教科书级别的悲剧
- 部署起来各种奇葩
但这些不改变python写起来飞快、生态完备、在技术够的情况下可折腾的东西特别多等等优点。现在我用Golang最多,回想上面项目部分比如第六项爬虫相关那个,当时用Python做,从头到底几个人一个月时间就上线,我不认为Golang可以这么快。第一版上线一个月完成的东西包括:
- ec2上spot instance一个独立的竞价库,在规定的时限、预算目标、爬虫性能预估模型基础上,可以尽力去拍卖竞购所需要的计算资源提供平台。
- 爬整个alexa ranking前100万排名的网站的头几层页面,根据其内容选择数万和我们所需要信息相关的网站,把它们全站爬一次。初次爬,要求24小时内出结果。
- 一个自己设计的web mining组合算法,从上述爬回来的几个T的数据里挖出我们有价值的某类产品信息。注意,数万网站、数百万网页格式,直接regex/xpath都是完全没有用的。数万网站涉及M个国家、N种语言。
- 数据清洗,给出一个自动估算的准确度预测
- 和内部一个百万级数据的产品数据库整合,把上述爬回来处理好的数据做成一个“网上如此描述本产品”的功能,展示一段机器通过上述挖掘处理以后的数据的综述。
- 和内部一个百万级数据的产品数据库整合,把上述爬回来处理好的数据中出现的却无法匹配到我方内部数据的产品做置信评估,选出数万高置信的,供人工分析、排查并最终。
- 每天增量更新上述各项。