DropBox使用Python的6个经验分享

开发 前端 后端
DropBox 使用 Python 的 6 个经验—如何每15分钟存储100万文件,DropBox 每 15 分钟要存储 100 万文件,甚至超过了 Twitters 上 tweet 发布数量。

下面是 DropBox 使用 Python 的经验分享:

1.1 Use Python

Dropbox 的 99.9% 的代码是用 Python 写的。 Python 使用在服务器端、桌面的客户端、网站控制逻辑,后端的 API 和分析

在 Android 平台,由于内存的限制不能使用 Python

使用 Python 语言运行单一的代码。通过使用 PyObjs , WxPython , types , py2exe , py2ap , PyWin32 等工具,让 Dropbox 运行在 Windows , Mac 和 Linux 系统

优点:

开发人员通过 Python 互相沟通和表达思想

简单易学,易于阅读,易于编写,新人容易上手

缺点:

别傻了

它消耗太多的内存并且运行的太慢。在服务器端不是大问题,只要买大的机器就行。但在客户端,你别指望让老的 Power PC 用户升级设备

Python 和 C 混合编程会产生问题,因为它很难跨越语言边界轮廓想象你使用固定内存和 CPU 想干什么( Coding in a mixed environment of Python and C creates problems because it's hard to profile across the language boundaries like you want to do when fixing memory and CPU problems. )

内存碎片问题是脚本语言可能不是一个长期运行进程的好主意

1.2 从开始就让它工作 (Just Work Baby)

如果不管你是什么文件系统,是什么操作系统,什么应用程序所使用。该产品应始终只是要能工作。

在所支持的种类繁多的平台上,分析遇到的各种错误, Python 帮助他们进行快速的迭代。

1.3 早发布 (Release Early)

在一天内进行编码并发布它,使用 Python 很容易做到

1.4 在循环内使用 C ,优化 CPU 是容易的 (Use C for Inner Loops, Optimizing CPU is easy)

是一种解决速度太慢的问题的方法。

优化内部循环,以减少 CPU 时间。

在 Python 中循环与 C 中相比,多消耗 44% 时间

Python 的虚拟机字节码调度是很慢。

有许多工具调优 CPU 。

CPU 优化通常限于小代码段

1.5 轮询不容易扩展 (Polling 30 million clients all over the world doesn’t scale)

建立一个 HTTP 通知结构,以避免客户端轮询服务器。

1.6 自定义内存分配器,优化内存很困难

曾经有一段时间***的问题。可以使用的大量内存但内存永远不会被释放。对于大型同步他们可以使用最多 1.5GB 的,现在他们很少使用超过 100MB 的。

很难,因为:

很少有工具为 Python 和 C 优化内存

内存膨胀有很多的原因:在 Python 和 C 代码内存泄漏,内存碎片,内存使用效率不高。

固定内存的低效率没有明显的帮助。他们认为有一个内存泄漏,但没有。

问题变成了内存碎片。内存碎片是发生在不同大小的内存块是不断被删除和分配。什么情况是连续的内存块可以不再进行分配。 CPython 没有一个垃圾收集器,所以所有的内存根本无法分配和堆内存不断增长

解决办法是建立一个自定义分配器。该文件的元数据对象时,做了很多的增长转移,所以明显的成果是在 C 中使用 mmap 创建自定义分配器。
 

原文链接:http://www.linuxidc.com/Linux/2011-04/34748.htm

【编辑推荐】

  1. 你不知道的 Python装饰器的一个妙用
  2. Python编辑利器:PyCharm初探
  3. 推荐6本学习Python的免费电子书
  4. 自制Python函数帮助查询小工具
  5. 浅析Python中的列表解析和生成表达式
责任编辑:陈贻新 来源: linux社区
相关推荐

2015-07-10 10:00:24

亚马逊AWS云计算

2014-04-01 10:04:59

Dropbox

2022-06-06 11:55:12

Flink字节跳动State

2010-09-02 12:54:30

CSS

2011-07-07 18:39:22

SEO

2015-09-01 14:45:41

苹果彭博Mesos

2016-11-10 09:26:18

2010-04-17 12:48:33

2018-07-27 09:05:31

开源技术 软件

2018-07-24 09:21:39

Dropbox开源文件共享应用

2011-06-27 17:40:51

SEO

2011-07-13 18:09:07

编程语言

2020-05-25 15:56:59

Python函数开发

2010-05-19 18:04:44

2020-07-10 10:39:04

Python开发工具

2010-06-13 09:09:34

MySQL 4.0.2

2009-09-25 17:58:00

CCNA自学

2009-09-28 10:52:00

CCNA考试经验CCNA

2010-04-21 16:21:27

Oracle数据库

2011-07-25 08:49:29

CIO云计算
点赞
收藏

51CTO技术栈公众号