V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  wcsjtu  ›  全部回复第 1 页 / 共 7 页
回复总数  134
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 好用
2022-07-26 11:37:36 +08:00
回复了 wcsjtu 创建的主题 Python 请问大家, 有没有办法把 Python 的 dict, 存储到一段连续内存上
@ipwx 这个是可以做的。 就是麻烦点。 其实有点像 msgpack 这种, 只不过它没办法索引。 需要自己改造, 在 msgpack 中加上地址的元信息, 给索引用。 最好是 str/int/... 这些类型都按照 Python 的格式存储, 只是不要 PyObjectHeader 。这样读表时, 就只需要新建 header ,然后再引用表中的数据即可。 原理就是这样, 但是很麻烦,不想自己搞
2022-07-26 10:44:40 +08:00
回复了 wcsjtu 创建的主题 Python 请问大家, 有没有办法把 Python 的 dict, 存储到一段连续内存上
@neoblackcap capnproto 好像是个序列化的库,dict 被序列化后怎么索引呢?

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

所以我想问问大家有没有现成的轮子可以用用
2022-07-26 10:23:15 +08:00
回复了 wcsjtu 创建的主题 Python 请问大家, 有没有办法把 Python 的 dict, 存储到一段连续内存上
@mayli 嗯, 这个就是我必须要求连续内存的原因了。 词表本身只读, 但是有可能词表中的元素与某个对象在同一个 page 上, 如果这个对象被改了, 那么词表中的元素也会被 copy 。
2022-07-26 10:21:18 +08:00
回复了 wcsjtu 创建的主题 Python 请问大家, 有没有办法把 Python 的 dict, 存储到一段连续内存上
@ipwx
@air8712
@zhoujinjing09
嗯, 目前把 IPC 作为最后兜底方案……
2022-07-25 21:20:09 +08:00
回复了 wcsjtu 创建的主题 Python 请问大家, 有没有办法把 Python 的 dict, 存储到一段连续内存上
@SenLief 应该不能,PyMalloc 是调用的 glibc 的 malloc 。应该要用 C++的轮子
2022-07-25 21:19:25 +08:00
回复了 wcsjtu 创建的主题 Python 请问大家, 有没有办法把 Python 的 dict, 存储到一段连续内存上
@gengchun 嗯, 性能是一方面, 其实我们业务里还有很多这种词表, 有的结构比较复杂, 所以存 redis 不太合适。
2022-07-25 21:17:48 +08:00
回复了 wcsjtu 创建的主题 Python 请问大家, 有没有办法把 Python 的 dict, 存储到一段连续内存上
@lysS 因为如果能全部放到 shared memory 里,那肯定是只读的, 所以应该没有并发安全问题
2022-07-25 19:35:04 +08:00
回复了 wcsjtu 创建的主题 Python 请问大家, 有没有办法把 Python 的 dict, 存储到一段连续内存上
@wangyzj
@786375312123
历史原因, 只能用 Python……
2022-07-25 18:59:52 +08:00
回复了 wcsjtu 创建的主题 Python 请问大家, 有没有办法把 Python 的 dict, 存储到一段连续内存上
@lambdaq tuple 也不是存在连续内存里的, 里面各种 PyObject* ....
2022-07-25 18:58:56 +08:00
回复了 wcsjtu 创建的主题 Python 请问大家, 有没有办法把 Python 的 dict, 存储到一段连续内存上
@SenLief 目前是想能不序列化就不序列化。 其实是可以在共享内存里存裸数据的,read 的时候加上 Python header 就行了。不过这个方法说起来简单, 但是做起来很麻烦
2022-07-25 18:56:06 +08:00
回复了 wcsjtu 创建的主题 Python 请问大家, 有没有办法把 Python 的 dict, 存储到一段连续内存上
@Muniesa 这个有意思, 我去学习一下
1  2  3  4  5  6  7  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2436 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 16ms · UTC 15:56 · PVG 23:56 · LAX 07:56 · JFK 10:56
Developed with CodeLauncher
♥ Do have faith in what you're doing.