有没有办法强制 Python 在 Windows 上使用 64 位整数?

Is there any way to force Python to use 64 bit integers on Windows?

我注意到,每当任何整数超过 2^31-1 时,我的数字繁重的代码都会出现大幅减速,尽管事实上我在 64 位版本的 Python 上使用 64 位版本Windows。这似乎是 true on Python 2.7 and Python 3. I’ve read that Windows 使他们的 long 成为 32 位,但这并不意味着我不能使用 64 位数字。

有没有办法通过 class 或模块甚至 Python 的不同构建来使用 64 位整数?

my_array = numpy.array(my_list,dtype=numpy.int64)

也许?

python 有 four numeric types 对于整数,有 int 和 long。长整数具有无限精度。当你输入足够大的数字时,你会得到一个 long ,或者你可以通过添加 "l"

来明确指定它
>>> s = 1000
>>> type(s)
<type 'int'>
>>> s = 1000l
>>> type(s)
<type 'long'>

我不知道有任何 Windows 版本使用 int 和 Python 2.7 的 64 位本机类型。所有 C 编译器都将使用 long 来引用 32 位类型。将 Python 更改为使用 long long 作为 int 的内部表示可能会破坏扩展模块。

在 Python 3.x 上,唯一的整数类型是任意精度类型(在 Python 2.x 下称为 long)。在 64 位系统上,任意精度类型以 2^30 位的块形式工作。在 32 位系统上,任意精度类型以 2^15 位的块形式工作。值 15 和 30 很难更改。

对于外部库,我维护 gmpy2 库。它提供对任意精度 GMP/MPIR 库的访问。一旦数字长度达到 ~128 位,gmpy2.mpz 整数类型通常更有效。 YMMV.