下面是 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
【编辑推荐】