在Python中进行多线程/并发编程有哪些选择?

2024-06-12 13:07:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个简单的site spider,我决定借此机会学习Python并发编程的一些新知识。我决定尝试其他方法,而不是使用线程和队列,但是我不知道什么适合我。在

我听说过无堆垛,芹菜,扭曲,龙卷风,和其他东西。我不想建立一个数据库和芹菜的其他依赖关系,但如果它适合我的目的,我会的。在

我的问题是:我的应用程序的适用性和实用性之间的平衡点是什么?我已经看过Stackless中的微线程,但是我不确定urlopen()调用是否会阻塞,或者它们是否会并行执行,我在任何地方都没有看到过这一点。在

有人能给我一些关于我的选择和什么是最好的使用细节吗?在

谢谢。在


Tags: 方法目的数据库应用程序关系队列编程site
3条回答

要快速了解包装尺寸,请参阅 ohloh.net/p/compare
当然,源代码大小只是一个粗略的指标(我真正想要的是nr pages doc,nr pages examples, 依赖关系),但它可以帮助。在

Tornado是一个网络服务器,所以它对你编写一个蜘蛛没有多大帮助。Twisted更通用(而且不可避免地很复杂),适用于各种网络任务(并且与几个GUI框架的事件循环有很好的集成)。事实上,过去有一个扭曲的.web.spider(但它几年前就被移走了,因为它没有被维护,所以你必须在Twisted提供的设施上自己翻滚)。在

我必须说,扭曲得到了我的选票。在

在Twisted中,执行事件驱动任务相当简单。与其他重要的系统组件(如GTK+和DBus)的集成非常容易。在

HTTP客户机支持目前是基本的,但仍在改进(9.0.0):see related question。在

额外的好处是Twisted可以在Ubuntu默认存储库中使用;-)

相关问题 更多 >