python3升级改动
-
异步使用async修饰函数,外部使用await等待完成
-
dict结构的items()
'dict_items' object is not subscriptable
-
map是同步函数,不能使用map
-
使用urllib发送请求时,请求体需要为bytes类型
data = urllib.parse.urlencode(formData).encode("utf-8")
-
签名算法使用3.9.9的pycryptodome
-
创建多线程异步方法取消,使用异步装饰器
-
异步await后不能直接获取属性值 sub
-
import urllib urllib.quote 无此属性,
修改,import urllib.parse
urllib.parse.quote
-
cx_Freeze==6.2版本,存在bug,升级为6.3之后解决,需要用到该库的需要升级。
-
国际化语言包lang.po需要在文件头添加编码等信息。
-
await后不能直接获取属性
-
aiomysql需要升级到0.1.0
-
curator升级
-
使用
get_arguments(xxx)
notself.request.arguments(xxxx)
-
xrange 改为range
-
在异步函数中,time.sleep改为asyncio.sleep
升级性能提升
全部234个对象查询
场景 | 50并发连续 | 50并发1次 | 非并发 | |
---|---|---|---|---|
优化前 | 分组20个日志库 | 17514 | 11946 | 126 |
1个日志库 | 2482 | 560 | 17 | |
10个日志库 | 12278 | 4530 | 160 | |
正则三个,日志库10多个 | 105512 | 77112 | 1983 | |
正则,6个层级 | 112296 | 145942 | 2605 | |
正则,6个层级 | 124270 | 66963 | 2124,2194 | |
40个日志库,层级6 | 64511 | 32628 | 1400 | |
优化后 | 40个日志库,层级6 | 6505 5818 | 1848 1938 | 48 61 |
正则,6个层级 | 36993 | 13320 | 492 | |
1个日志库 | 1521,1582,1699,1979,1753 | 13,25,631,1065,231,41,457,839,50,14,731,43,371,646,97,14,78,517,58,13,13,415,20,21,648 | 77,17,64,12,20,20,71,26,24,14,12,65 | |
python3升级 | 1个日志库 | 326,338,334 | 16,9,11,9 | 7 |
升级python3,简单接口性能提升50倍,其中代码大多为正则过滤的逻辑接口提升是4-10倍
python3相比python2做了GIL锁策略的优化,python2中是根据执行指定的操作码后,根据竞态进行切换,而此切换比较无效,因为有可能还是原先的,其它的只能等待,而python3中使用的timeout时间片段式,线程工作时间达到设定的时间片后,就释放,别的线程再来竞态争抢。
具体可看该链接讲述:https://blog.csdn.net/nibuyaoshiwang/article/details/110407549