杜逸先 Python3 的新特性和改进Python3的新特性和改进 杭州美登科技 杜逸先 目录 CONTENTS Python的现状 Python3的新特性和改进 迁移到Python3 问答环节 1 Python的现状 Python的现状 Python2.7将于2020年1月1日停止维护 Python的现状 Python2.7将于2020年1月1日停止维护 主流Python包陆续终止对Python2的支持 Python的现状 Python3的新特性和改进 ——重要变化 Python3的新特性和改进——重要变化 Text Vs. Data Instead Of Unicode Vs. 8-bit 内容 类型 混合使用 Python3 Text Vs. Data str Vs. bytes ✖ Python2 Unicode Vs. 8-bit unicode Vs. str ✔ Python3的新特性和改进——重要变化 Python2 Python3的新特性和改进——重要变化 Python3 Python3的新特性和改进——重要变化 Python3的str和bytes不能混用! Python3的新特性和改进——重要变化 求一段文本的MD5:Python2 Python3的新特性和改进——重要变化 求一段文本的MD5:Python3 Python3的新特性和改进——重要变化 Views And Iterators0 码力 | 78 页 | 2.28 MB | 1 年前3
4 Python机器学习性能优化Python机器学习性能优化 以BERT服务为例例,从1到1000 刘欣 ⽬目录 CONTENTS 1. 优化的哲学 2. 了解你的资源 3. 定位性能瓶颈 4. 动⼿优化 1. 优化的哲学 "There ain't no such thing as a free lunch" Ahmdal’s Law • 系统整体的优化,取决于热点部分的占⽐比和该部分的加速程度 No Free Flask Production Server • gunicorn 多进程解决多核利利⽤用率问题 • gevent 协程替代多线程⽹网络模型 • 更更⾼高效的序列列化lib 3 定位性能瓶颈 Profile before Optimizing Python Profilers • time.time() • cProfile • line profiler • pyflame 放个截图 cProfile • 倒序打印 & graph pyflame • 插桩 or 采样 • 放个flamegraph • 开源地址 wrk • 制造压⼒力力 • 挖掘整体性能瓶颈 • 实现⾮非常精妙的压⼒力力⼯工具,强烈烈安利利(要不不要写个py binding) 4 动⼿优化 多线程服务器的问题 • 每个请求单独进GPU,利利⽤用率不不⾼高 • ⼤大量量请求并⾏行行,CUDA会爆0 码力 | 38 页 | 2.25 MB | 1 年前3
3 Thautwarm 解放python的表达力 性能和安全性 语法和语义扩展 JIT 静态检查解放Python的 表达力,性能和安全性 Thautwarm 目录 CONTENTS 语法和语义扩展 JIT 静态类型 语法和语义扩展 表达力的扩展, 可用性的保留,白来的午餐? 演示一小部分: 模式匹配, Quick Lambda, Pipe运算 语言决定思维模型 GNU-APL C++ Haskell 说 到 质 数 � 人 们 想 到 什 么 � 语言决定思维模型 检查类型的pattern (a, *b, c): 匹配tuple [a, *b, c]: 匹配列表 演示 Pattern-Matching 基于template-python扩展实现。 性能比Pampy高数量级倍。 简单直接的自定义pattern,真实的tree pattern matching。 Match的每个分支是语句而不是表达力有限的表达式。 … benchmark.py 而基本上编译器0优化的Cython端, 你模拟栈后, 还远不如Python解释器快, 所以必须写分析去掉栈机语义。 那用Julia后端就可以不写了? 来谈后端的问题。 Julia Cython 常见性能提升 100x 1-10x 小函数JIT 比Python慢1000倍 比Python快50% 启动时间 10s以上, “JAOT” 没有,调编译器快 循环折叠 有 有 Debug现场? 每次打log等待30s0 码力 | 43 页 | 10.71 MB | 1 年前3
1_丁来强_开源AIOps数据中台搭建与Python的作用缺少持续改进(运维⼈人员⼤大部分时间忙于救⽕火) • ⼈人员学习速度跟不不上业务增⻓长和问题出现的速度 基本概念 • AIOps = Artificial Intelligence for IT Operations • 组合⼤大数据 + 机器器学习 + 分析来帮助IT运维: • 发现、预测、修复问题 ⼤大数据 机器器学习 分析 Garner:AIOps对IT运维的改进 ⼤大数据促进平台融合 指标类时序数据⽅方案 • 其他OLAP选择 • AI增强⽅方案 数据源与监控 - 容器器化架构为例例 物理理主机/VM层监控 容器器POD指标监控 容器器CaaS层资源监控 应⽤用层性能监控 应⽤用层 ⽇日志 指标监控 prometheus + grafana + thanos elastic stack, TICK stack, Open Telemetry Zabbix Apache孵化阶段 • 国内⽤用的⽐比较多 • 性能影响较⼩小(<10%) • Cloud Native容器器化⽀支持好 • ⽀支持存储到ES/TiDB、 MySQL等 InfluxData stack (TICK) • Telegraf + InfluxDB + Chronograf + Kapacitor • InfluxDB:⾼高性能的时序数据库。 • vs ES: 8X写⼊入,少4X磁盘占⽤用,3~7响应速度0 码力 | 48 页 | 17.54 MB | 1 年前3
Python3 基础教程 - 廖雪峰http://www.yeayee.com/ 8/531 总的来说,这几种编程语言各有千秋。C 语言是可以用来编写操作系统 的贴近硬件的语言,所以,C 语言适合开发那些追求运行速度、充分发 挥硬件性能的程序。而 Python 是用来编写应用程序的高级编程语言。 当你用一种语言开始作真正的软件开发时,你除了编写代码外,还需要 很多基本的已经写好的现成的东西,来帮助你加快开发进度。比如说, print('Eating meat...') 继承的第二个好处需要我们对代码做一点改进。你看到了,无论是 Dog 还是 Cat,它们 run()的时候,显示的都是 Animal is running...,符合逻 辑的做法是分别显示 Dog is running...和 Cat is running...,因此,对 Dog 和 Cat 类改进如下: class Dog(Animal): def 你说“来个汉堡”,服务员告诉你,汉堡需要等 5 分钟,你可以先去逛商 场,等做好了,我们再通知你,这样你可以立刻去干别的事情(逛商场), 这是异步 IO。 很明显,使用异步 IO 来编写程序性能会远远高于同步 IO,但是异步 IO 的缺点是编程模型复杂。想想看,你得知道什么时候通知你“汉堡做好 了”,而通知你的方法也各不相同。如果是服务员跑过来找到你,这是 回调模式,如果服务员发短信通知你,你就得不停地检查手机,这是轮0 码力 | 531 页 | 5.15 MB | 1 年前3
WeRoBot 1.1.0 微信公众号开发框架文档的默认值为 auto 。 注意 WSGIRef [http://docs.python.org/library/wsgiref.html#module-wsgiref.simple_server] 的性能非常 差, 仅能用于开发环境。 如果你要在生产环境下部署 WeRoBot , 请确保你 在使用其他 server 。 通过 WSGI HTTP Server 运行 WeRoBot werobot robot.handler 添加的 handler 才会被调用。 robot.key_click —— 回应自定义菜单 @robot.key_click 是对 @robot.click 修饰符的改进。 如果你在自定义菜单中定义了一个 Key 为 abort 的菜单,响应这个菜单的 handler 可以写成这样 @robot.key_click("abort") def abort(): return "I'm a robot" 两者是等价的。 robot.filter —— 回应有指定文本的消息 @robot.filter 是对 @robot.text 修饰符的改进。 现在你可以写这样的代码 @robot.filter("a") def a(): return "正文为 a " import re @robot.filter(re.compile("0 码力 | 62 页 | 75.61 KB | 1 年前3
WeRoBot 1.1.1 微信公众号开发框架文档的默认值为 auto 。 注意 WSGIRef [http://docs.python.org/library/wsgiref.html#module-wsgiref.simple_server] 的性能非常 差, 仅能用于开发环境。 如果你要在生产环境下部署 WeRoBot , 请确保你 在使用其他 server 。 通过 WSGI HTTP Server 运行 WeRoBot werobot robot.handler 添加的 handler 才会被调用。 robot.key_click —— 回应自定义菜单 @robot.key_click 是对 @robot.click 修饰符的改进。 如果你在自定义菜单中定义了一个 Key 为 abort 的菜单,响应这个菜单的 handler 可以写成这样 @robot.key_click("abort") def abort(): return "I'm a robot" 两者是等价的。 robot.filter —— 回应有指定文本的消息 @robot.filter 是对 @robot.text 修饰符的改进。 现在你可以写这样的代码 @robot.filter("a") def a(): return "正文为 a " import re @robot.filter(re.compile("0 码力 | 62 页 | 75.91 KB | 1 年前3
Django 官方教程翻译项目《掌握正则表达式》 也是很棒的。实际上,你并不需要成为正则表达式 方面的专家,你真正要会的是如何使用简单捕获模式。因为复杂的正则可能会有不尽人意的查找性 能,所以你不太应该全依赖于正则匹配。 最后,一个性能注意点:这些正则表达式在 URLconf 模块加载后的第一时间就被编译了。它们都是 非常快的(只要查找的不是特别复杂就像上面举例的)。 当 Django 发现一个正则表达式匹配时,Django get_queryset(self): 8. """返回最近发布的五个投票""" 9. return Question.objects.order_by('-pub_date')[:5] 我们需要改进 get_queryset() 方法,让他它能通过将 Question 的 pub_data 属性与 timezone.now() 相比较来判断是否应该显示此 Question。首先我们需要一行 import question_text) 我们应该给 ResultsView 也增加一个类似的 get_queryset 方法,并且为它创建测试。这和我 们之前干的差不多,事实上,基本就是重复一遍。 我们还可以从各个方面改进应用,但是测试会一直伴随我们。比方说,在目录页上显示一个没有选项 (Choices)的问题就没什么意义。我们可以检查并排除这样的 问题(Questions)。测试里则可 以创建一个没有选项的问题0 码力 | 103 页 | 1.86 MB | 1 年前3
WeRoBot 1.2.0 微信公众号开发框架文档的默认值为 auto 。 注意 WSGIRef [http://docs.python.org/library/wsgiref.html#module-wsgiref.simple_server] 的性能非常 差, 仅能用于开发环境。 如果你要在生产环境下部署 WeRoBot , 请确保你 在使用其他 server 。 通过 WSGI HTTP Server 运行 WeRoBot werobot 有给出返回值的情况下, 通过 robot.handler 添加的 handler 才会被调用。 robot.key_click —— 回应自定义菜单 key_click() 是对 click() 修饰符的改进。 如果你在自定义菜单中定义了一个 Key 为 abort 的菜单,响应这个菜单的 handler 可以写成这样 @robot.key_click("abort") def abort(): == "abort": return "I'm a robot" 两者是等价的。 robot.filter —— 回应有指定文本的消息 filter() 是对 text() 修饰符的改进。 现在你可以写这样的代码 @robot.filter("a") def a(): return "正文为 a " import re @robot.filter(re.compile("0 码力 | 70 页 | 82.33 KB | 1 年前3
WeRoBot 1.3.0 微信公众号开发框架文档的默认值为 auto 。 注意 WSGIRef [http://docs.python.org/library/wsgiref.html#module-wsgiref.simple_server] 的性能非常 差, 仅能用于开发环境。 如果你要在生产环境下部署 WeRoBot , 请确保你 在使用其他 server 。 通过 WSGI HTTP Server 运行 WeRoBot werobot 有给出返回值的情况下, 通过 robot.handler 添加的 handler 才会被调用。 robot.key_click —— 回应自定义菜单 key_click() 是对 click() 修饰符的改进。 如果你在自定义菜单中定义了一个 Key 为 abort 的菜单,响应这个菜单的 handler 可以写成这样 @robot.key_click("abort") def abort(): == "abort": return "I'm a robot" 两者是等价的。 robot.filter —— 回应有指定文本的消息 filter() 是对 text() 修饰符的改进。 现在你可以写这样的代码 @robot.filter("a") def a(): return "正文为 a " import re @robot.filter(re.compile("0 码力 | 76 页 | 84.54 KB | 1 年前3
共 146 条
- 1
- 2
- 3
- 4
- 5
- 6
- 15













