Python速度在32位与64位Windows上的问题

2 投票
3 回答
2291 浏览
提问于 2025-04-16 14:10

我在把应用程序从32位的Windows 7移动到64位的Windows Server 2008时,遇到了一些性能问题。这两个系统的处理器差不多。我写了一个简单的程序来测试内存分配的性能,想看看有什么不同。结果显示,在64位的Windows上创建列表的时间几乎是32位Windows的10倍。32位系统用的是Python 2.6.5,64位系统用的是2.6.6。到底是什么原因导致这个问题呢?我还写了一个小的C语言程序来做同样的测试,结果显示64位服务器反而更快。那么到底出了什么问题呢?

#silly python memory allocation test
from datetime import datetime
import random

d = datetime.now()
listo = [1] * 300000
del listo
print datetime.now()-d
d = datetime.now()
listo = [1] * 3000000
del listo
print datetime.now()-d
d = datetime.now()
listo = [1] * 30000000
print datetime.now()-d

32位系统的结果

0:00:00.002000
0:00:00.024000
0:00:00.166000

64位系统的结果

0:00:00.031000
0:00:00.156000
0:00:02.672000

在64位Windows上,Python和内存性能之间是否存在什么突出的问题呢?

64位Windows 2008 R2服务器配置

4个CPU,16GB内存,20GB的C盘,10GB/s的网络,Xeon X5570 @ 2.93GHz

32位Windows 7电脑配置

2个CPU,2GB内存,500GB的C盘,1Gb/s的网络,Core 2 Duo @ 3.00GHz

3 个回答

0

我在使用64位的Python 2.7时遇到了另一个问题。我运行了一个程序,在32位的Python上,这个程序在一台较小的电脑上出现了内存溢出。我想知道我的大内存会不会被用上。结果确实用上了,最多用了10GB,结果电脑就卡住了。我不得不切断电源,然后重启电脑。

2

我不知道为什么会差这么多,但你应该预期会花更多时间。因为在这个例子中,程序在64位模式下分配的内存是32位模式的两倍,因为Python在它的列表中使用的是32位或64位的指针。

在C语言中,如果你仍然使用32位的数据类型,这种情况可能会有所不同。

2

这个问题是因为在Windows服务器上使用了虚拟机软件。

撰写回答