什么类型的项目将帮助我学习线程编程

时间:2012-05-01 12:34:16

标签: python multithreading

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

我希望能够处理所有相关对象,如Locks,Mutexes,Conditions,Semaphores等。

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

P.S。除了项目,请建议任何工具来调试/配置/加载测试我的应用程序,以便我可以衡量我的线程实现有多好。

2 个答案:

答案 0 :(得分:5)

一些想法:

  1. 网络抓取工具 - 让一个线程池从调度程序通过队列获取工作,下载网页并将结果返回到某处。

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

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

  4. 如果我想到的话,我会用更多的想法进行编辑。

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

答案 1 :(得分:0)

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

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

祝你好运!

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