我需要弄清楚如何将文件输出写入Python中的压缩文件,类似于下面的双线程:
open ZIPPED, "| gzip -c > zipped.gz";
print ZIPPED "Hello world\n";
Run Code Online (Sandbox Code Playgroud)
在Perl中,这使用Unix gzip将打印到ZIPPED文件句柄的任何内容压缩到文件"zipped.gz".
我知道如何使用"import gzip"在Python中执行此操作,如下所示:
import gzip
zipped = gzip.open("zipped.gz", 'wb')
zipped.write("Hello world\n")
Run Code Online (Sandbox Code Playgroud)
但是,这非常缓慢.根据分析器,使用该方法占用了我运行时间的90%,因为我将200GB的未压缩数据写入各种输出文件.我知道文件系统可能是问题的一部分,但我想通过使用Unix/Linux压缩来排除它.这部分是因为我听说使用同一模块进行解压缩也很慢.
我是网络开发的新手,我正在使用Django开发一个基本的图库应用程序(学习练习).我设置好所以我可以一次上传一个完整的图像来创建一个新专辑.这一切似乎都运行正常,但是当上传的文件特别大时,我收到HTTP 504错误.
我收集(如果我错了请纠正我)这个错误意味着我的应用程序太慢而无法返回HTTP响应.我猜这是因为解压缩和处理(在数据库中创建Pic对象并创建缩略图)所有图像需要很长时间.
有没有办法在后台执行处理时返回响应(比如某些中间页面) - 也许使用线程?处理这个问题的正确方法是什么?是时候开始学习Javascript/AJAX吗?
谢谢!
from django.db import models
from blog.models import Post
class Album(models.Model):
title = models.CharField(max_length=128)
slug = models.SlugField()
description = models.TextField()
parent = models.ForeignKey('self', null=True, blank=True)
pub = models.BooleanField()
date_created = models.DateTimeField(auto_now_add=True)
date_published = models.DateTimeField(null=True, blank=True)
date_modified = models.DateTimeField(auto_now=True)
def __unicode__(self):
return self.title
class Pic(models.Model):
image = models.ImageField(upload_to='pics/%Y/%m')
title = models.CharField(max_length=128)
caption = models.TextField(blank=True, null=True)
albums = models.ManyToManyField('Album', null=True, blank=True)
posts = models.ManyToManyField(Post, blank=True, null=True)
date_taken = models.DateTimeField(null=True, blank=True)
date_uploaded = models.DateTimeField(auto_now_add=True)
date_modified = …
Run Code Online (Sandbox Code Playgroud)