DropBox使用Python的6个经验分享

下面是 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 没有一个垃圾收集器,所以所有的内存根本无法分配和堆内存不断增长

相关推荐