25 个回答
说到用 Python 工作的体验,就一个字,爽。
工作过两家公司,第一家公司是用 C/C++ 的,主要还是用 C,每天写代码经常和一堆指针还有五花八门的位运算过不去,调试的时候还要经常去对内存中每一位的值。没错,那时候就是搞嵌入式开发的。在某天想提升自我的时候,我决定静下心来学一学 Python,先是看了 《Head First Python》 ,然后挨个栗子写过去,遇到问题强迫自己先去查 官方文档 ,还是不能解决就百度 or Google 之,大部分问题都能在 stackoverflow 上找到答案。这个过程保持了三四天的样子,基本已经能根据自己需求写出一个像样的 Python 脚本了(比如spider)。
于是答主为了能更好地发挥自己算法方面的优势,离开了第一家公司,到了一家做互联网广告的创业公司,全公司的技术开发全部为 Python,底层部分是用 C++ 的。 公司用 Python 的原因主要在于创业阶段力求缩短开发期,及时将调整的方向落实下来并观察市场反馈情况, 所以像 BAT 这样的企业为了求稳定和效率必然不会用 Python 来做核心业务开发。我在入职之后大致上做过以下 Python 相关的工作:
1、Spider
这个算是 Python 的拿手绝活了,我工作上使用了 scrapy 开源框架,主要是针对电商数据进行抓取。必要的时候还会用到 beautifulsoup 辅助解析网页( scrapy 自带的 xpath 提取内容相对更好用一些),用 selenium 的 webdriver 来模拟浏览器上的一些行为(主要用来模拟一些无法获取 post 包的 ajax 请求)。存储上用过多种数据库比如 MongoDB、Redis、MySQL。抓取这一块用的最多的是 MongoDB,这里具体原因就不展开了。和 spider 相关的工作还有分布式开发,自己做过一个 spider 调度架构,也是用 Python 写的。
2、Data Mining
这工作基本算是在互联网公司做算法永恒不变的主题,在答主的公司主要目的就是实现广告的精准投放。这块工作说简单来就是用决策树和协同过滤做用户的个性化推荐,加以一些聚类模型优化广告竞价的选词出价。虽然 Python 有许多现成的 ML 库,不过这块工作基本还是重新造了轮子,不能说我写出来的模型一定比开源来得好,但至少在发现 bug 的时候,可以准确知道是哪行代码出了问题,而不至于出了问题要翻别人的几千行开源代码,在日后也会更方便做分布式和并行计算的拓展。
3、Interfaces
由于创业公司的技术开发人手有限,所以也要搞后端开发的活,主要负责和前端进行数据交互,然后和各大网站 API 对接(比如淘宝、百度、大众点评等等)。这块工作主要就是利用 python 编写多线程脚本,实现诸如消息队列这样的功能。也有一些现成的软件框架,比如我们目前用的是 Thrift 框架,接口转发层是 Python 写的,然后分布式到每台服务器上的数据处理模块是 C++ 写的。还有一部分工作就是用 Python 的 Django 框架 进行 web 开发,比如官网和各种管理台开发。
有些人总是喜欢吐槽说 Python 性能低,内存占用高,还有糟糕的多线程。没错,这些的确都是 Python 的缺点。但是语言毕竟只是一种工具,选择用什么语言做开发得看你自己的需求不是,至少用 Python 处理每日几千万的 PV 是没问题的。Google 的好多项目开发都还是用 Python,况且 Python 之父也还在 Google 呢,你确定你们的项目一上来就堪比 Google 的项目规模?
---------------------------------------------
这篇是三年前的回答了,你们就不要吐槽荷兰人 Guido 不在 Google 的故事了……
之前写的薪水也是三年前的行情,我也删掉了免得你们再吐槽(逃