网络通信:Twisted
Twisted是一个用Python编写的事件驱动网络框架,支持多种协议,包括UDP、TCP、TLS和其他应用层协议,例如HTTP、SMTP、NNTM、IRC、XMPP/Jabber等。开发人员可以直接使用Twisted实现的协议来编写自己的应用,而遇到Twisted没有提供协议实现的时候,也只需要自己编写协议类,并不需要处理更加底层的内容。
一个Twisted程序一般由Reactor发起的主循环和一些回调函数组成。当事件发生时,程序中相应的回调函数就会执行。Twisted是一个异步模型,与多线程模型不同的是,对于线程的控制,决定权在操作系统手中,编程者只能假设和建议线程的控制。而在异步模型中,一个任务想要运行,必须放弃对当前任务的控制权,这就使得异步模型比多线程模型要更加简洁。但对于编程过程来说,异步模型要更加复杂,必须将大块的任务拆成小步骤来做。但是为了提高应用的性能,这些付出是值得的。