Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python速度32 v 64位Windows问题_Python_Windows_Performance_32bit 64bit - Fatal编程技术网

Python速度32 v 64位Windows问题

Python速度32 v 64位Windows问题,python,windows,performance,32bit-64bit,Python,Windows,Performance,32bit 64bit,我在32位Windows7和64位WindowsServer2008之间移动应用程序时遇到了性能问题,这两种应用程序都使用类似的处理器。我编写了一个简单的程序来测试内存分配性能,以查看差异。它表明,在64位上创建列表所需的时间几乎是32位窗口的10倍。在32和64上分别使用python 2.6.5和2.6.6。是什么导致了这个问题?我写了一个小小的“c”程序来做同样的事情,它显示64位服务器运行得更快。那么到底出了什么问题 #silly python memory allocation test

我在32位Windows7和64位WindowsServer2008之间移动应用程序时遇到了性能问题,这两种应用程序都使用类似的处理器。我编写了一个简单的程序来测试内存分配性能,以查看差异。它表明,在64位上创建列表所需的时间几乎是32位窗口的10倍。在32和64上分别使用python 2.6.5和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 pc


2个CPU、2GB内存、500gb C驱动器、1 Gb/s网络核心2 duo@3.00ghz我不知道为什么会这么长,但您应该期待更长的时间,因为在本例中,程序在64位模式下分配的内存是32位模式下的两倍,因为python在其列表中使用32/64位指针


当您仍然使用32位数据类型时,这在C中可能会有所不同。

问题是由于在windows服务器上使用Virtual machine软件造成的。

我在Python 2.7和64位上遇到了另一个问题。我运行了一个32位Python的程序,在一台较小的计算机上产生了内存溢出。我对我的大公羊是否会被使用很感兴趣。当然是这样。最高可达10 GB,且机器已挂起。我必须切换电源并重新启动计算机。

是的,可能是他刚刚超过某个阈值,导致GC运行。@Gabe-或将数据集从三级缓存中推出。@atzz:他正在创建一个包含30M整数的列表,在32位机器上为120MB。这是一个地狱般的三级缓存!:)@加布-是的,我想我忽略了几个数量级:)注意使用更好的时机,比如。ThanksI刚刚将timeit用于Windows 7 64位Python 2.6.5上的三个示例。我必须添加一个del,这样它就不会缩短实际创建的时间。我的时间与你的32位时间非常匹配。你的电脑有多快?你有多少内存?@BenSapp我真的不知道为什么。但是在没有虚拟服务器软件的情况下运行相同的代码,64位和32位python的性能几乎相同。我正在windows server 2010上使用VMware corporate stuff 64.0。我在VMWare上的服务器2008 R2虚拟机上(免费版)。我问这个问题的原因是,我已经在Python2.7上与django(OSQA)进行了大约一周的斗争,试图让它表现得更好。当我点击一个页面时,VM上的cpu通常会达到50%,平均响应时间为400-700ms。当我在Win7 64(32位python)上运行本机时,它几乎不会对CPU和适当的响应时间(约130ms)产生任何影响。完全不同!我在WindowsServer2010上使用了高达92GB的64位python。这是刀片服务器所能支持的最大值,因此我必须更改代码以使用更少的内存。10giga字节的使用从未给我带来任何麻烦。