我想从网上打开一个大文件,并希望在完全下载之前开始处理它。 我想要的是像urllib2,但有另一个线程在后台下载文件。 它将具有与文件相同的界面: 如果我读取更多下载的字节,主线程会阻塞它, 如果字节已经存在,则读取将立即返回。 下载所有内容后,额外的下载程序线程将会死亡。 当所有内容都被读取时,EOF将会触发。
是否有一些内置模块可以做到这一点?
答案 0 :(得分:0)
我调查了这个: http://mail.python.org/pipermail/python-bugs-list/2007-April/038250.html 还有这个: https://stackoverflow.com/a/1517728/498782
并为您提供了一个缓冲读卡器:
url_resource = urllib2.urlopen(url)
CHUNK = 8 * 1024
while True:
chunk_data = url_resource.read(CHUNK)
if not chunk_data:
break
process(chunk_data)
但请记住,上面包含阻塞调用。对于异步工作,您可以查看: