首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python代码优化

Python代码优化
EN

Stack Overflow用户
提问于 2009-12-29 02:57:02
回答 2查看 316关注 0票数 0

我正在构建一个在线字体预览器,其架构如下。我将预览创建功能封装在一个独立的.py文件中,并在Django视图中对其进行系统调用,以便在多核CPU系统上并行和最大限度地运行它们。

preview.py

代码语言:javascript
复制
....
def make_preview(text, fontfile, imagefile, fontsize=30):
    try:
        font = ImageFont.truetype(fontfile, fontsize)
        text_width, text_height = font.getsize(text)
        img = Image.new('RGBA', (text_width, text_height))
        draw = ImageDraw.Draw(img)
        draw.text((0, 0), text, font=font, fill=(0, 0, 0))
        return True
    except:
        return False
if __name__=='__main__':
    make_preview(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4])

views.py

代码语言:javascript
复制
...
def ajax_preview(resquest):
    ttf_file_list = [construct a list of .ttf files]
    image_list = []
    for ttf_file in ttf_file_list:
        image_file = ttf_file.replace('.ttf', '.png')
        image_list.append(image_file)
        subprocess.Popen(['python', 'preview.py', text, ttf_file, image_file, 30)
    return HttpResponse(image_list)

是否有可能使上面的代码更快?也许有一个更好的架构来完成这项工作,或者我可以对代码进行任何优化?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-29 03:09:30

您应该查看多处理模块。您可以创建一个等于您的CPU核心数量的工作池,然后将作业发送到您的make_preview函数。

票数 2
EN

Stack Overflow用户

发布于 2009-12-29 05:05:42

如果这是一个字体选择器,您可以在每次显示时合理地显示相同的文本,您可以预渲染字体示例,并将结果保存为.PNG或.GIF文件。(您不想使用JPEG图像,因为它们会使字体变得模糊;JPEG使用有损压缩。)

然后,您可以使您的字体选择器的预渲染HTML块,引用预渲染预览图像。

您只需要在安装或从系统中删除字体时重新生成预览。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1972699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档