我使用python和httplib为我的文件共享服务器实现了一个非常简单的文件上传程序。如果文件大于1MB,则文件将被分块并一次上载一个块。我的客户机和服务器之间的网络连接非常好(100mbps,<;3ms延迟)。在
当块大小很小(低于128kB左右)时,一切正常(大于200kB/s)。但是,当我将块大小增加到256kB或更大时,完成一个块所需的时间比128kB的分块(20kB/s)要多10倍。更奇怪的是,这种情况只发生在我的win32机器(win8x86,运行32b python)中,而不是在amd64机器上(win8amd64,运行64b python)。在
经过一些改进,我将搜索范围缩小到的request()和getresponse()函数httplib.HttpConnection,因为这些是阻塞的原因。在
我的第一个猜测是关于套接字缓冲。但是改变sosndbuf和TCP_NODELAY选项并没有多大帮助。我也检查过我的服务器端,但一切正常。在
我真的希望有人能帮我。更改http库(改为pycurl)是我最不想做的事情。提前谢谢!在
原来这是一个与虚拟机相关的问题。我在一个虚拟机上运行Python代码,但是当我把同样的代码复制到运行同一个Windows版本的物理机器上时,问题就消失了。在
由于我对虚拟机机制完全不熟悉,如果有人能解释为什么虚拟机中存在这样的问题,那就太好了。在
相关问题 更多 >
编程相关推荐