V2EX wcsjtu 的所有回复 第 1 页 / 共 7 页
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX    wcsjtu    全部回复第 1 页 / 共 7 页
回复总数  135
1  2  3  4  5  6  7  
是国企总部,还是科技子公司, 这俩差距还挺大。 一般给这么多钱的国企, 都不会稳定的。
2022-10-24 10:44:24 +08:00
回复了 wcsjtu 创建的主题 Python 有没有老哥推荐一个支持 struct 类型的 hindley-milner 实现
@secondwtq 非常感谢。 目前我们是打算用 Python 写业务逻辑,然后转 C++。 完全禁用了 Python 的动态特性,所以可以把 Python 看做静态语言。subtyping 问题, 能够用强制类型标注的手段解决么?

大佬给的这三个链接信息量非常大, 我去好好阅读下。
2022-10-21 11:44:34 +08:00
回复了 wcsjtu 创建的主题 Python 有没有老哥推荐一个支持 struct 类型的 hindley-milner 实现
@secondwtq 多谢大佬。

1. 我理解,像

```python
def foo(x):
y = x.双十一
```
这样的代码, 确实推断不出来 y 的类型。但是如果有上下文,或者有类型标注, 应该还是推出来吧。

2 . 我理解`x.y`和`x[y]`应该是比较类似的, 如果知道了 x 的类型, 那么`x.y`或者`x[y]`也就比较好推断了。 但是如果`x`类型未知,是不是应该把`getattr`/`getitem`操作记录 HM 的方程里面, 等 unify x 时再去真正执行`getattr`/`getitem` ?

3 . subtyping 好像是比较麻烦,如果在语法层面,把类继承禁用,是不是就没有 subtyping 的问题了呢?

4. 我去学习一下 Typeclass ,Row Polymorphism
2022-10-21 10:59:27 +08:00
回复了 wcsjtu 创建的主题 Python 有没有老哥推荐一个支持 struct 类型的 hindley-milner 实现
@Austaras 多谢大佬,我去学习下什么是 row polymorphism
2022-10-20 14:30:36 +08:00
回复了 wcsjtu 创建的主题 Python 有没有老哥推荐一个支持 struct 类型的 hindley-milner 实现
@Austaras 大佬能给个搜索关键字吗, 我不是 PL 背景出身……行业黑话看不懂啊
2022-10-20 14:29:05 +08:00
回复了 wcsjtu 创建的主题 Python 有没有老哥推荐一个支持 struct 类型的 hindley-milner 实现
@pisc 多谢大佬。我们之前做了一个"Python" ==> C++的 transcompiler 。 但是没有静态检查,导致 Python 代码有问题不能在 Python 层发现, 得编译生成的 C++代码才知道。 没有类型信息,一些 high level 的优化也没办法做。所以想着 HM 能不能解决我的问题。

这里的"Python"是一个 Python 非常小的子集,只支持非常小部分的语法、类型和标准库。其中类型只有 str/int/float/complex/list/dict/tuple/deque/set 和 `dataclass`。 所以做类型推导应该没那么难.....

我没有系统学过 PL 方面的知识, 所以想找些 demo ,我去参考一下, 再照着写……
2022-09-30 14:49:50 +08:00
回复了 hhhhhh123 创建的主题 程序员 Python 读取 500M .pkl 文件,却用了 8 G 内存
getsizeof 不会递归统计内存,你得到的只是最外层容器的内存占用值。自己写个函数去递归统计吧,这样的数据才是相对准确的
2022-09-30 14:40:08 +08:00
回复了 DaChuiZi 创建的主题 Python Python 多层 for 循环性能如何提高
@xsourse 这种情况,numba 没用的,绝对是负优化。
2022-09-29 11:47:10 +08:00
回复了 DaChuiZi 创建的主题 Python Python 多层 for 循环性能如何提高
思路一:修改逻辑, 不要用 for 循环
思路二:实在要用 for ,改成 C/C++循环, 可以使用 mypyc 编译该部分代码, 也可以用 cython 编译。mypyc 有语法要求, 性能稍微好一点。cython 可以直接编,性能比较差,但是还是远比 Python for 循环好

我们团队搞了一个专门为 Python 业务逻辑加速的编译器,性能吊打 cython/mypyc/pypy , 可惜不能开源.......
2022-09-23 16:38:33 +08:00
回复了 jeeyong 创建的主题 Python 如何提高 Python 数组操作性能.
应该是代码里出现了大量的 for 循环,以及大量的__getitem__/__setitem__操作才慢的。numpy.ndarray 的随机读取性能确实不如 builtins.list 。因为`ndarray[i]` 需要 new 一个 PyLongObject 出来,而`builtins.list[i]`只需要 refcnt++。

楼主这个问题, 如果用 numpy 的话, 就得摆脱面向过程的思想, 用函数式来做。numpy 的 broadcast 机制应该能实现楼主想要的功能。需要稍微学习一下。

如果不想用 numpy 的话, 只能用预编译或者 jit 方案来加速了。 既然楼主已经试过 numba 了, 我推荐另一个工具 pythran. 性能与 numba 差不多, 但是比 numba 好用
@ipwx 这个是可以做的。 就是麻烦点。 其实有点像 msgpack 这种, 只不过它没办法索引。 需要自己改造, 在 msgpack 中加上地址的元信息, 给索引用。 最好是 str/int/... 这些类型都按照 Python 的格式存储, 只是不要 PyObjectHeader 。这样读表时, 就只需要新建 header ,然后再引用表中的数据即可。 原理就是这样, 但是很麻烦,不想自己搞
@neoblackcap capnproto 好像是个序列化的库,dict 被序列化后怎么索引呢?

这个事情如果要自己造轮子吧, 肯定要自己设计 str/int/float/list/dict 这些数据结构的, 然后还要定义他们转成 PyObject*的规则,很麻烦……

所以我想问问大家有没有现成的轮子可以用用
@mayli 嗯, 这个就是我必须要求连续内存的原因了。 词表本身只读, 但是有可能词表中的元素与某个对象在同一个 page 上, 如果这个对象被改了, 那么词表中的元素也会被 copy 。
@ipwx
@air8712
@zhoujinjing09
嗯, 目前把 IPC 作为最后兜底方案……
@SenLief 应该不能,PyMalloc 是调用的 glibc 的 malloc 。应该要用 C++的轮子
@gengchun 嗯, 性能是一方面, 其实我们业务里还有很多这种词表, 有的结构比较复杂, 所以存 redis 不太合适。
@lysS 因为如果能全部放到 shared memory 里,那肯定是只读的, 所以应该没有并发安全问题
@wangyzj
@786375312123
历史原因, 只能用 Python……
@lambdaq tuple 也不是存在连续内存里的, 里面各种 PyObject* ....
@SenLief 目前是想能不序列化就不序列化。 其实是可以在共享内存里存裸数据的,read 的时候加上 Python header 就行了。不过这个方法说起来简单, 但是做起来很麻烦
1  2  3  4  5  6  7  
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3353 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 18ms UTC 00:40 PVG 08:40 LAX 16:40 JFK 19:40
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86