Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.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下载速度非常慢_Python - Fatal编程技术网

python下载速度非常慢

python下载速度非常慢,python,Python,有没有办法提高Python上的url下载速度 我有一个用VB6编写的程序,它不需要尝试就可以使用Python。我已经对它进行了转换,现在正在尝试,在Python(linux)中,速度似乎慢了很多,是原来的两倍。即使是这个程序的初始版本看起来也比我在Windows上使用的时间要长 我尝试过使用urllib(2.7)、urllib.request(3.3)和请求。目前我正在尝试urllib3,而且速度也不快。在Windows上通常需要45分钟,而在linux上,在同一台计算机上,在同一个intern

有没有办法提高Python上的url下载速度

我有一个用VB6编写的程序,它不需要尝试就可以使用Python。我已经对它进行了转换,现在正在尝试,在Python(linux)中,速度似乎慢了很多,是原来的两倍。即使是这个程序的初始版本看起来也比我在Windows上使用的时间要长

我尝试过使用
urllib
(2.7)、
urllib.request
(3.3)和
请求。目前我正在尝试
urllib3
,而且速度也不快。在Windows上通常需要45分钟,而在linux上,在同一台计算机上,在同一个internet连接上完成同样的任务需要将近2个小时。这项任务只是在互联网上搜索和下载文件,当搜索找到它要找的东西时……只是一系列可能的文件名

我还想问,既然今天下午已经发生了不止一次,我该如何检测110错误代码(连接超时)。我在下面使用的东西不起作用,它仍然终止了程序

import urllib3

http = urllib3.PoolManager()

def dl_10(self):
        self.NxtNum10 = int(self.HiStr10)
        while self.NxtNum10 < int(self.HiStr10)+9999:
                url = 'http://www.example.com/videos/encoded/'+str(self.NxtNum10)+'.mp4'
                r = http.request('GET', url)
                if r.status==404:
                        self.NxtNum10 +=1
                        continue
                elif r.status==110:
                        continue
                else:
                        urllib.request.urlretrieve(url,str(self.NxtNum10)+'_1.mp4')
                        statinfo = os.stat(str(self.NxtNum10)+'_1.mp4')
                        if statinfo.st_size<10000:
                                os.remove(str(self.NxtNum10)+'_1.mp4')
                        else:
                                self.End10 = self.NxtNum10
                self.NxtNum10 +=1

        self.counter +=1
        self.NxtNum10 = 'FINISHED'
导入urllib3
http=urllib3.PoolManager()
def dl_10(自身):
self.NxtNum10=int(self.HiStr10)
而self.NxtNum10如果statinfo.st_size我发现使用以下方法比直接使用urlretrieve快得多:

resp = urllib2.urlopen(url)
respHtml = resp.read()
binfile = open(filename, "wb")
binfile.write(respHtml)
binfile.close()

直接写文件。希望能有所帮助

你说的是总时间还是个人时间?在我看来,你是按顺序下载的,而不是并行下载的。我有10个独立的三个文件,按顺序下载10000个文件。Windows(VB6)上的每个程序通常需要45-50分钟才能完成一个完整的周期(10个程序同时运行)。在linux/Python上,在一个小时内,每个线程只能处理3000多个文件。因此,我对速度的缺乏感到震惊。唯一改变的是Windows到Linux和VB6到Python。其他一切都一样。昨晚我打算在Windows上试用Python。我厌倦了安装这些模块,于是放弃了。Linux在使用Python方面要优越得多。是的,从你的风格中我可以看出你对VB更熟悉我真的不知道这里发生了什么,但是你可以试试pycurl(用于libcurl的python包装器)。如果存在,请下载它并继续检查下一个可能的文件。使用Python2.7/urllib,它将下载任何404丢失的文件,我将删除它。在3.3中,每次都会弹出404错误。我开始检查代码,并在浏览不同的模块时将其踢出,从而更好地理解了模块的功能。它不会拾取错误110,但连接超时错误。我来看看pycurl。回到2.7。我想我已经用完了任何Python 3.0+。缺少/不可用的内容太多。只需尝试pycurl,结果相同。我很困惑,为什么我不能获得与Windows或VB6相同的下载速度。此解决方案是否在保存之前下载整个文件?我有一个很长的要下载的URL列表,但其中一些已超时。我想知道这些特定的下载是否失败(或下载但不完整)