V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  LeeReamond  ›  全部回复第 84 页 / 共 88 页
回复总数  1745
1 ... 76  77  78  79  80  81  82  83  84  85 ... 88  
2021-01-29 02:07:07 +08:00
回复了 LeeReamond 创建的主题 Python 想要开发一个供 Python 使用的静态类型检查项目
@frostming mypy 的 pycharm 插件很好用,但是 runtime 我觉得很糟糕,经常卡死,异常又怪。不过刚才试了一下,之前没试过的,runtime 确实是支持 PEP563,这样说来也堪用了
2021-01-28 07:48:03 +08:00
回复了 LeeReamond 创建的主题 Python Python 使用静态类型标注时的循环导入问题
@no1xsyzy 感谢,已经解决
2021-01-28 02:53:07 +08:00
回复了 LeeReamond 创建的主题 Python 想要开发一个供 Python 使用的静态类型检查项目
大概调研了一下,目前感觉一个可行的实现思路是这样,首先 hook 模式对我来说难以理解,暂时认为不可行,相反装饰器模式很简单,可以通过修改装饰器修改 metaclass,实现对普通函数,和类内所有函数的手动标注,这样注入之后程序在所有函数的入口和出口处都有了类型检查,在自动测试中自然也一样。

之后只需要在发布的时候删除装饰器就可以了,可以写一个非常简单的状态机搞定。
2021-01-28 01:45:40 +08:00
回复了 wyytxml 创建的主题 程序员 作品展示:股市板块量化监控小助手
我个人的经验是已经有看盘软件开发过的功能就不要自己开发,毕竟还是为了方便使用为主,自己做的通常吃力不讨好。抛开技术,楼主感觉最近大盘如何,应该加仓吗
2021-01-28 01:42:11 +08:00
回复了 LeeReamond 创建的主题 Python Python 使用静态类型标注时的循环导入问题
@no1xsyzy 我测试了一下方法 1,我没太看懂 https://github.com/samuelcolvin/pydantic/blob/master/pydantic/typing.py#L51-L68 这一段怎么用 eval 实现的字符串到实例的转换,不是很理解为什么 from typing import _eval_type 之后,_eval_type 就变成了 ForwardRef 的方法,我自己这么调用没有成功,所以不是很理解 sys.modules[cls.__module__].__dict__拿到的 globals 怎么转化,我自己从中没法提取想要的信息,虽然 runtime 当中这句执行已经在导入所有库之后,但仍然只能拿到相对该文件的 globals
2021-01-28 01:13:40 +08:00
回复了 Strive0630 创建的主题 Python 打算重构一个项目使用 Django,大佬们给点建议
@windfarer 跟技术栈有关,我开始学习异步已经是 3.5 版本以后的事,因为当时已有原生异步所以从一开始就否决了猴子补丁的方案。现在问我的话我觉得 asyncio 很优雅,并且完全不能理解 gevent 的使用方式
2021-01-28 01:11:11 +08:00
回复了 LeeReamond 创建的主题 问与答 2021 年,用 Python 部署异步网络服务的最佳实践是什么?
@wdhwg001 感谢,我不太熟悉这个 benchmark 的项目,你不指路的话我都不知道你指的源码是这个。我按他的部署测了一下,确实是速度快一些,整体单进程和 prefork 的性能和 aiohttp+gunicorn+uvloop 几乎相当,可能 gunicorn 自己是 python 写的,性能极限就这么多了吧,在我的机器上测试 qps 并没有超过四万。

大概是这样

Thread Stats Avg Stdev Max +/- Stdev
Latency 2.79ms 1.39ms 17.14ms 68.74%
Req/Sec 7.31k 2.07k 12.89k 67.10%
727813 requests in 20.02s, 85.37MB read
Requests/sec: 36348.24
Transfer/sec: 4.26MB

作为对比,后面用 pyston 跑了一下,加入 jit 以后 fastapi 确实是更快一些
fastapi+python3.8: Requests/sec: 36348.24
fastapi+pyston2.1: Requests/sec: 45435.96

aiohttp+python3.8: Requests/sec: 36170.63
aiohttp+pyston2.1: Requests/sec: 42089.11


所以 fastapi 相对于 aiohttp 或者 tornado 这些传统异步框架没有性能劣势,那么使用 fastapi 的优势是什么呢,除了比较火以外,用来做后端服务器似乎很合适,因为可以自动生成文档,不过这个其实也还好,不是那么的决定性,不太清楚还有没有什么其他优势。不过不管怎么说 2021 年感觉部署大型 web 应用,如果使用 py 的话,起码语言不应作为性能瓶颈看待了。不知道当初知乎、豆瓣这些网站,都是 py2 时代码出来的项目,后面都传出来过重构的新闻,如果用现在的 python 的话应该是不会重构了吧
2021-01-28 00:21:49 +08:00
回复了 maobukui 创建的主题 Python [ Python ]关于 flask 视图函数中需要多线程 or 多进程的实现
这种情况下不会默认并行,如果是的话属于打破 python 解释规则的行为,很颠覆。需要用户自行处理线程,并且注意 gil
2021-01-28 00:19:11 +08:00
回复了 Strive0630 创建的主题 Python 打算重构一个项目使用 Django,大佬们给点建议
@windfarer 仅是就事论事,讨论了一下目前的异步框架速度,扩大到全体语言和全体框架并不恰当,实际上前几年 djg2 的时代,使用同步模型+默认中间件设置的话确实是慢得很,go 快不上一万倍,但一千倍还是有可能的
2021-01-27 22:09:36 +08:00
回复了 LeeReamond 创建的主题 Python Python 使用静态类型标注时的循环导入问题
@no1xsyzy 感谢回复,有时间研究一下。关于 mixin 和抽象类,我不会 ponylang 和 rust,所以无法理解你提供的 mixin 的例子。抽象类这个功能对于代码复用不是很灾难么,因为本身继承就是希望可以复用基类的代码,如果每个子类必须重新实现一遍的话感觉很累赘啊
2021-01-27 20:45:26 +08:00
回复了 LeeReamond 创建的主题 Python 想要开发一个供 Python 使用的静态类型检查项目
@caviar mypy 用过,另外还用过一个叫 pyright 的,那个不怎么样,mypy 的 ide 检查还不错,但是感觉我这个偏运行时?我研究一下你发这个 typeguard,还有 profiler hook 是啥,没听过这个词
2021-01-27 20:06:28 +08:00
回复了 VincentYoung 创建的主题 程序员 MySQL 5 亿数据查询如何优化
不应该啊,已经加了索引,怎么还会 5000 万数据就 5 分钟
问问题用 gist 展示代码是美德。
2021-01-27 19:15:03 +08:00
回复了 Strive0630 创建的主题 Python 打算重构一个项目使用 Django,大佬们给点建议
@2379920898
@jmyz0455
@windfarer

然而事实是 go 并不能快一万倍。

https://www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=fortune&l=zijmrj-1r

根据 techempower 的测试,对于 1202 年的异步 python,框架转发能力方面,go 的最大模型领先五倍性能,中位数在 2-3 倍。所以 2-3 倍的执行效率(大概率冗余)是你从 python 生态切换到 go 生态的理由?
2021-01-27 18:51:06 +08:00
回复了 LeeReamond 创建的主题 Python Python 使用静态类型标注时的循环导入问题
@so1n 没听懂,详细说一下?
2021-01-27 18:05:39 +08:00
回复了 LeeReamond 创建的主题 Python Python 使用静态类型标注时的循环导入问题
@so1n
@no1xsyzy
@676529483
@abersheeran

试了一下感觉目前这些方案都不行。我对静态类型的期望有两个,其一是在开发的时候可以使用 IDE 直接寻址到对象的目标位置,如果用双引号的写法的话无法实现,其二是我希望能够在 runtime 使用 inspect.trace 追踪到对象,这样可以在自动测试中依据这个特性自动检查所有函数和方法的输入输出是否符合要求,让程序更可靠,大概类似于编译中的静态类型检查吧。这个需求用双引号的方式也无法实现,用`from __future__ import annotations`也无法实现。

目前来看只能获取到对象的字符串名称,而不能直接获取对象,而进行 isinstance 判断必须要输入对象,所以似乎无解。还有一种方式是通过某种方式设计重载,并且在重载后使用 eval()将字符串转换为类,但一来实现成本较高,二来 eval 总归让人不爽。
2021-01-27 17:49:21 +08:00
回复了 LeeReamond 创建的主题 Python Python 使用静态类型标注时的循环导入问题
@popil1987 只是这么抽象在人类逻辑上比较清楚,可能对程序来说不清楚,我不太懂设计的问题,mixin 是什么意思,百度搜了一下没搜到
2021-01-27 09:08:18 +08:00
回复了 LeeReamond 创建的主题 Python Python 使用静态类型标注时的循环导入问题
2021-01-27 09:01:08 +08:00
回复了 LeeReamond 创建的主题 Python Python 使用静态类型标注时的循环导入问题
@abersheeran 手机上看的,不太方便,看起来似乎像是引入一个被动变量跳过编译检查?然后在 runtime 中类型提示已经被去除了,所以不会报错?
2021-01-27 08:58:42 +08:00
回复了 LeeReamond 创建的主题 Python Python 使用静态类型标注时的循环导入问题
@abersheeran 我看了一下 pep563 没抓住重点他想表达什么,大佬能概述一下有什么作用吗
1 ... 76  77  78  79  80  81  82  83  84  85 ... 88  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5425 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 27ms · UTC 06:49 · PVG 14:49 · LAX 22:49 · JFK 01:49
Developed with CodeLauncher
♥ Do have faith in what you're doing.