9 月 21 号周六,我参加了 PyCon China 2019 上海站,这是每年一届的 Python 中国开发者大会。
今年的上海站比往年的阵容扩大很多,「流畅的 Python」作者、Flask 作者及核心维护者、PyCharm 开发者等等大佬都登台演讲。
本文将总结一下我观看的演讲,但并不会深入和完整,如有感兴趣的主题,可以等待官方后续放出的视频,我的公众号到时候也会转载。
Python 的永恒之美
「流畅的 Python」作者 Luciano Ramalho,作为首场演讲的嘉宾,他的讲题围绕着 Python 之禅(PEP 20: The Zen of Python),结合了国际象棋、围棋、甚至易经,再次诠释 Python 语法的优美之处。
他还表示 Python 非常适合女性开发,介绍了 Python 开发团队拥有很多女性加入,顺带调侃了 Python 作者 Guido 在演讲中只回答女性的提问。
通过 Azure 实现图片分类
第二场是由微软开发者 Dave Glover,介绍如何使用 Python 与微软 Azure 的免费云服务,构建一套 IoT 图片分类系统,并演示了开发一个水果分类功能,将不同水果的图片进行简单训练后,就可以用于超市收银台快速计算不同水果的价格(不过现场似乎因为音画不同步,导致有些小意外...)。
另外下午场微软 VS Code 还现场发布了在 Python 领域的新功能,具体可见公众号次条推送。
AWS Serverless 一站式开发
结束了前两场英语听力后(翻译在文末吐槽),第三场是来自宝岛台湾的谢洪恩,他是 AWS 无服务器与容器专家解决方案架构师。他介绍了 AWS 近几年在 Serverless 领域发布的新技术,主要包括:
- AWS Lambda
- AWS SAR(Serverless Application Repository)
- AWS CDK(Cloud Development Kit)
利用这些技术让 Python 开发者在无服务器的情况下,完成一站式开发部署(也支持其它多种语言),并且还介绍了在微服务框架中的应用。
另外在下午场中,谢老师还进行了三个小时的 AWS WorkShop 专场,现场指导开发者们,在 AWS CDK 中从零开始完成一个完整项目。但可惜由于时间冲突,我没有选择参加。
Flask 作者谈调试
Flask、Werkzeug、Jinja2、Click 等开源项目的作者 Armin Ronacher,讲述他在 Python 调试方面的新看法,并通过最近使用 Rust 语言的开发经历,发现了 Python 在性能上较慢反而对调试有帮助。
遗憾的是他英语语速很快,PPT 文字内容也比较少,我并没有听懂太多细节,需要等待视频再复习一波。
在调试上的新实现
上午最后一场,是由 Google 软件工程师、《捕蛇者说》播客创始人 laike9m 演讲,同样是调试的话题,但他带来的是一个新思路,以及已经实现的开源库 —— Cyberbrain。
主要思路是对目标变量进行追踪,通过可视化界面查看变量从初始化一直到目标行的过程,从而帮助快速定位 BUG。
以下是一段示例代码:
def func_f(bar):
x = len(bar)
return x def func_c(baa): baa.append(None) baa.append('?') def func_a(foo): for i in range(2): pass ba = [foo] func_c(ba) foo = func_f(ba) cyberbrain.register(foo) import cyberbrain cyberbrain.init() fo = 1 func_a(fo)
通过对 foo
变量的注册,可以产生以下输出:
并且支持持久化存储,即使在服务器上也可以 DEBUG。
AIOps 数据中台与 Python
下午场都是同时开始的分会场,所以我只能选择听自己感兴趣的场次。
最近两年“中台”概念比较火,我公司也已经有中台,所以我首场选择了这个中台话题的场次,嘉宾是来自阿里云日志服务的丁来强。
他演讲的内容主要是介绍目前市面上众多 AIOps 平台,并介绍如何通过开源的 AIOps 搭建数据中台,来解决数据收集、算法处理海量日志等以往需要大量人工的问题。
至于 Ops 的未来趋势,他表示:
根据 Gartner 的报告,AIOps 将在未来 5-10 年落地开花,并集中统一各种 Ops 平台(Dev、IT、Net、Sec)。
Django 中运用 GraphQL
先介绍一下 GraphQL,它是 Facebook 发布 API 查询语言,旨在提供 RestFul 架构体系的替代方案,但一直鲜有人用,甚至鲜有人知。
目前 RestFul API 存在的问题是,返回的数据结构和类型都是后端定义,前端需求变化,后端也要随之改变,如果是中大型项目,改动接口是会产生大量连带工作量。
而 GraphQL 就是解决这一痛点,它实现了前端可以自定义请求字段与结构,而后端则专心处理请求逻辑与数据库映射。具体不再多介绍,可查阅相关资料。
LeetCode 后端架构师李齐雨,介绍了 LeetCode 在最近两年,已经将十几万行 Django 代码构成的所有接口,更换为了 GraphQL。
更换后的好处则如上面所介绍,让接口迭代更加灵活。他主要分享的是期间遇到的一些问题,以及如何攻克,比如数据转换、查询性能优化等。
不过他也直言,如果对接口性能要求很高,建议暂时不要使用 GraphQL。
构建自动化测试集群
这一场是网易 Airtest 团队负责人杨柳,前半部分是介绍 Airtest 这一开源的自动化测试框架,在跨平台特别是 App、手游这方面的优势,框架集成的图像识别、控件识别大幅增加了自动化能力。
后半部分是分享网易游戏如何将自动化测试逐步扩展为大规模测试集群,并且介绍了如何使用 3x4 小型机柜,实现一个企业级、私有化的测试解决方案。
通过 Python 构建 RPC
来自饿了么的资深工程师张汝家,先是介绍了 thrift 这一款 RPC 协议,在目前微服务架构中的应用,以及目前 Python 实现的 thriftpy 和 thriftpy2 的区别和各自的应用场景。
然后他分享了使用 thriftpy 构建一套 RPC 协议架构的过程,中间不同分层该如何设计,并且其中一些通信与传输问题是如何解决的。
闪电演讲
最后的场次,是本届 PyCon 设置的新环节,每位嘉宾只有 5 分钟时间演讲,可惜部分嘉宾超时未完成演讲,实际效果欠佳。
不过有一个印象深刻的主题是将 C/C++ 代码转换为 .pyd 文件,Python 可直接调用。
演讲者是上海韦纳科技的韦泽华,他实现了此功能并开源名为 c2py,该项目与之前类似功能的 Swig 相比,c2py 更加易用,不需要像 Swig 写接口文件,just run c2py & build。
本次大会的观后感
相较于往期有非常大的进步,主要是:
- 本届大咖云集,通过多位著名项目核心开发者的分享,学习他们在各自领域中独到的见解;
- 分会场的设立,充分扩大了演讲的主题范围,也满足了不同方向的开发者不同的关注点。
但依然有部分遗憾之处,比如:
- 第一场半程,某赞助商的 AI 翻译就莫名罢工,并且一上午都没有再启动,导致我等英语苦手,对三位国外大佬的演讲吸收量大减;
- WorkShop 设置在下午分会场,如果选择了就相当于无缘同时间段的三场演讲,纠结之下我只能放弃参与。
总体本届还是收获满满,票价超值了,也看出主办方想办好 PyCon China 的决心,希望明年再加油,PyCon 明年见!
所有图片来自 PyCon China 官方拍摄
本文属于原创内容,首发于微信公众号「面向人生编程」,如需转载请在公众号后台留言。
关注后回复以下信息获取更多资源
回复【资料】获取 Python / Java 等学习资源
回复【插件】获取爬虫常用的 Chrome 插件
回复【知乎】获取最新知乎模拟登录