【发布时间】:2014-12-21 21:25:49
【问题描述】:
我正在用 Python 编写一个国际象棋程序,我使用 python-chess 进行棋盘表示和移动生成等。它通常非常好并且具有非常有用的功能。
但是,由于它是纯 Python 的,它现在是我 AI 的瓶颈。 Python 长整数及其按位运算在模块中被广泛使用,例如
x = b & -b
b ^= x
if not x & 0xffffffff:
x >>= 32
r |= 32
有没有办法通过其他模块来加速 Python 中的这种操作?是否可以不用 C 或 Fortran 重写?我试过numba包,但它似乎无法编译python long int。
非常感谢。
【问题讨论】:
-
你看过 cython、numpy f2py 等吗?
-
@PadraicCunningham 我只能编写非常基本的 C/Fortran,所以想先看看是否可以不自己编写它们。
-
您不必编写 c 来使用 cython,这就是它为您完成所有工作的关键。
-
使用 PyPy。或者,如果可能,使用 Numpy。
-
@TonySuffolk66 正如问题中的 OP 所述,以这种方式实现的是 模块,而不是 OP 的代码。作为
python-chess的作者。