2

我想学习 Python 中的线程和多处理。我不知道该承担什么样的项目。

我希望能够处理所有相关的对象,如锁、互斥体、条件、信号量等。

请建议最适合我的项目类型。

PS 除了项目,请建议任何工具来调试/分析/负载测试我的应用程序,以便我可以衡量我的线程实现有多好。

4

2 回答 2

6

一些想法:

  1. 网络爬虫 - 有一个线程池通过队列从调度程序获取工作,下载网页并在某处返回结果。

  2. 聊天服务器 - 接受来自用户的永久连接并将消息从一个发送到另一个。

  3. mp3 文件管理器 - 从 mp3 标签数据重建音乐库的结构,并在文件夹中重新组织它们。你可以让多个线程同时工作。

如果我想到任何想法,我会编辑更多想法。

编辑:由于 python 被限制为每个进程一个 CPU,无论有多少线程,如果你想并行化 CPU 消耗的东西,线程将让你无处可去,改用multiprocessing接口,它几乎与线程 API 相同,但将东西分派到可以使用更多 CPU 内核的子进程。

于 2012-05-01T12:44:07.567 回答
0

我建议您尝试编写一个非常简单的数据库服务器。每个客户端都可以连接到服务器并在一组实体上创建、读取、更新、删除。在实现方面,服务器应该为每个客户端都有一个线程,所有客户端都操作一组全局实体,这些实体使用锁进行保护。

为了学习如何使用条件变量,服务器还应该实现一个 notify 方法,它允许在实体更改时通知客户端。

祝你好运!

注意:使用线程不是编写简单数据库服务器的最有效方法,但我认为这是一个自我改进的好项目。

于 2012-05-01T12:40:24.200 回答