我想在python cgi中使用多线程将多个文件(ard 25k)放入一个zip文件中。我写了下面的脚本,但不知怎的,我得到的响应内容长度为0,响应中没有数据。这是我第一次在python中使用多线程。代码中是否有任何缺少的内容?即使在数据发布之前,输出是否被打印?在Python中使用多线程下载文件
任何帮助将不胜感激。
这里是我的代码:
b = StringIO()
z = zipfile.ZipFile(b, 'w', zipfile.ZIP_DEFLATED)
def read_file(link):
fname = link.split('/')
fname = fname[-1]
z.write(link, fname)
if __name__ == '__main__':
form = cgi.FieldStorage()
fileLinks = form.getvalue("fileLink")
p = Pool(10)
p.map(read_file, fileLinks)
p.close()
p.join()
z.close()
zipFilename = "DataFiles-" + str(time.time()) + ".zip"
length = b.tell()
sys.stdout.write(
HEADERS % ('application/zip', zipFilename, zipFilename, length)
)
b.seek(0)
sys.stdout.write(b.read())
b.close()
相同的代码顺序版本:
for fileLink in fileLinks:
fname = fileLink.split('/')
filename = fname[-1]
z.write(fileLink, filename)
z.close()
算法的单线程版本是否按预期工作? – Apalala
感谢您的评论,让我试试看。 –
我尝试过使用单线程并将文件数限制为1000.它不起作用。它给出与零内容长度相同的响应。 –