- 主题:python提速这事情还有下文吗?
提个速很难吗?
--
FROM 120.244.224.*
再等等,感觉短时间没戏
【 在 hyperLee 的大作中提到: 】
: 提个速很难吗?
: --
: 山川载不动太多悲哀 岁月经不起太长的等待
:
: 春光最爱向风中摇摆 黄沙偏要将痴和怨掩埋
:
:
发自「今日水木 on LYA-AL00」
--
FROM 223.104.42.*
很难。
希望不大,不过其实现在意义也不大了。
【 在 hyperLee 的大作中提到: 】
: 提个速很难吗?
--
FROM 114.222.222.*
python 本身很难。但是可以弄出新的编程语言,专用于提速 python. 类似于 cython
我说说我的想法,看看你们资深用 python 的觉得有没有意义:
我正在弄一个 python 语法的静态编译语言。披着 python 语法是什么意思呢,就是这门语言的源代码直接可以在 python 解释器里面运行,完全符合 python 的语言规范。不过反过来就不行了,python 的代码不一定在这个新的语言里面运行。
这思路跟 cython 差不多。但 cython 语法是 python 语法的超集。学起来很难。而我打算弄的新语言,语法是 python 的子集。
def add(x: int, y: int) -> int:
return x + y
用 cython 编译,以上会编译成两个 PyLong 的相加,调用 PyLong 的 __add__ 方法,但是在新语言里面,完全可以直接编译成两个 int64_t 的相加。
需要支持容器:
def sum(l: list[int]) -> int:
r = 0
for i in l:
r += i
return r
对象采用引用计数管理,没有 gc
def update(d: dict[str, int]):
d["key"] = 2
碰到类型不定的情况:
def add(x, y):
return x + y
此时的编译结果和 cython 一样,调用 PyObject x 的 __add__() 方法。
这个语言还可以脱离 python 独立,变成一个类似于 go 那样的语言。
这种语言你觉得有意义吗?
【 在 lvsoft (Lv(The Last Guardian)) 的大作中提到: 】
: 很难。
: 希望不大,不过其实现在意义也不大了。
--
修改:hgoldfish FROM 110.85.22.*
FROM 110.85.22.*
现在 nuitka 和 cython 可以最可用,最接近这个目标的。
https://nuitka.net/
【 在 hyperLee (醉里挑灯看剑) 的大作中提到: 】
: 提个速很难吗?
--
FROM 110.85.22.*
很早之前整理的一些相关的加速途径,希望对你有帮助
■ PyPy
■ Pyston
■ Psyco
■ Nuitka
■ Cython toC
■ Grumpy toGo
■ NumPy
■ Numba JIT+CUDA based
■ pyCUDA
■ Intel Distribution for Python
■ rust-cpython
数据科学这方面加速比较直接的路径是Julia
【 在 hyperLee 的大作中提到: 】
: 提个速很难吗?
--
修改:dhcn FROM 120.245.22.*
FROM 120.245.22.*
非常感谢!
【 在 dhcn (dhcn) 的大作中提到: 】
: 很早之前整理的一些相关的加速途径,希望对你有帮助
: ■ PyPy
: ■ Pyston
: ...................
--
FROM 120.244.224.*
希望要多快呢?
或者说碰到什么速度瓶颈了 ?
【 在 hyperLee (醉里挑灯看剑) 的大作中提到: 】
: 提个速很难吗?
--
FROM 120.229.48.*
没意义。
静态类型的语言, 还是C++系的语法更容易接受。
int main(){}
比
def main()->int:
pass
简洁多了,书写也更灵活。
【 在 hgoldfish 的大作中提到: 】
: python 本身很难。但是可以弄出新的编程语言,专用于提速 python. 类似于 cython
: 我说说我的想法,看看你们资深用 python 的觉得有没有意义:
: 我正在弄一个 python 语法的静态编译语言。披着 python 语法是什么意思呢,就是这门语言的源代码直接可以在 python 解释器里面运行,完全符合 python 的语言规范。不过反过来就不行了,python 的代码不一定在这个新的语言里面运行。
: ...................
--
FROM 123.112.64.*
哈。这个好办。大不了搞个 c 语法的版本。
【 在 finlab (挨踢卢瑟) 的大作中提到: 】
: 没意义。
: 静态类型的语言, 还是C++系的语法更容易接受。
: int main(){}
: ...................
--
FROM 110.85.22.*