我使用Python Requests库下载一个大文件,例如:
r = requests.get("http://bigfile.com/bigfile.bin")
content = r.content
大文件的下载速度为每秒+-30 Kb,这有点慢。与bigfile服务器的每个连接都受到限制,因此我想建立多个连接。
有没有一种方法可以同时建立多个连接来下载一个文件?
您可以使用HTTPRange
标头仅获取文件的一部分(此处已涵盖python)。
只需启动几个线程,并获取每个线程的不同范围,就可以完成;)
def download(url,start):
req = urllib2.Request('http://www.python.org/')
req.headers['Range'] = 'bytes=%s-%s' % (start, start+chunk_size)
f = urllib2.urlopen(req)
parts[start] = f.read()
threads = []
parts = {}
# Initialize threads
for i in range(0,10):
t = threading.Thread(target=download, i*chunk_size)
t.start()
threads.append(t)
# Join threads back (order doesn't matter, you just want them all)
for i in threads:
i.join()
# Sort parts and you're done
result = ''.join(parts[i] for i in sorted(parts.keys()))
还要注意,并非每台服务器都支持Range
标头(尤其是带有负责数据获取的php脚本的服务器通常不实现标头的处理)。
嗨,我想下载一个多java的文件。网套接字。我可以通过基本的get请求获取文件: 这是完美的,但还不够,因为我希望使用多套接字。我可以通过请求HEAD获得头,这样我就可以只获得内容长度。现在我的计划是使用此代码创建线程。例如,如果我想下载一个有3个线程的文件;我将把内容长度除以3,然后用3个线程下载。(0-99) (100-199) (200-299) = 300300字节,然后我会加入部分,但我
问题内容: 我的MySQL数据库中有这些表: 通用表: Facebook表: 首席表: 基本上,常规表包含一些( 显然 )常规数据。基于generalTable.scenario,您可以在其他两个表中查找更多详细信息,这些表在某些熟悉的列中(例如,expiresAt),而在其他一些列中则不然。 我的问题是,如何仅通过一个查询就可以获取generalTable和正确的明细表的联接数据。 所以,我想这
我正在尝试更新一个名为< code>incode_warrants的表,并将< code>warn_docket_no设置为< code>incode_violations表中的< code>viol_docket_no。 我在Postgres 9.3中有以下SQL查询,但当它触发时,我得到以下错误: 我更像是一个主动记录的人,所以我的原始SQL技能严重不足。我想知道是否有人可以帮助我指出正确的方
问题内容: 我有一个表“ People”,主键为“ PersonID”,字段为“ Supervisor”。“ Supervisor”字段包含用于创建自我联接的“ PersonID”的外键。 我想创建一个sql查询,以返回所有以“ Me”(登录到数据库的PersonID)作为管理员的人,以及该列表上有人标记为管理员的任何人。本质上,我想在命令链中列出提供的PersonID下面的任何人。 问题答案:
因此,为了提供搜索功能,我可以进行多个连接。我开始使用带有@query表示法的JPQL,但我必须对每个参数进行检查,结果一团糟。我开始研究其他选项,我看到了关于QueryDSL、标准和规范的东西,但我不确定我应该关注和学习哪一个。不幸的是,我不知道很多关于这个主题,我希望有人能指出我在正确的方向,以一个很好的实现这个搜索。谢谢!
问题内容: 所以我有四个桌子。每个表都有一个与前一个表ID相同的ID。因此,我的点击表中有一个ID和一个广告来源的ID。在广告表中,它有一个广告ID和一个来自其广告系列的ID。所以这是一个例子。 因此,要找出表4中的值从何而来,我需要遍历每个表并检查它们具有哪个ID。基本上,我想知道表1中的哪些值与表4中的值相关联。 表4中的内容是网站的访问者,表1中的内容是互联网广告。我想知道哪些访客来自哪些广