我想学习Python中的线程和多处理。我不知道应该采取什么样的项目。
我希望能够处理所有相关对象,如Locks,Mutexes,Conditions,Semaphores等。
请建议一个最适合我的项目类型。
P.S。除了项目,请建议任何工具来调试/配置/加载测试我的应用程序,以便我可以衡量我的线程实现有多好。
答案 0 :(得分:5)
一些想法:
网络抓取工具 - 让一个线程池从调度程序通过队列获取工作,下载网页并将结果返回到某处。
聊天服务器 - 接受来自用户的永久连接,并将消息从一个发送到另一个。
mp3文件管理器 - 从mp3标签数据重建音乐库的结构,并在文件夹中重新组织它们。你可以让多个线程同时工作。
如果我想到的话,我会用更多的想法进行编辑。
编辑:由于python被限制为每个进程一个CPU,无论有多少线程,如果你想并行化CPU消耗的东西,线程将无处可去,使用multiprocessing
接口,它几乎相同于线程API,但会将内容分派给可以使用更多CPU内核的子进程。
答案 1 :(得分:0)
我建议您尝试编写一个非常简单的数据库服务器。每个客户端都可以连接到服务器,并在一组实体上创建,读取,更新,删除。在实现方面,服务器应该为每个客户端都有一个线程,所有客户端都运行一组全局实体,这些实体使用锁保护。
为了学习如何使用条件变量,服务器还应该实现一个notify方法,它允许在实体更改时通知客户端。
祝你好运!注意:使用线程不是编写简单数据库服务器的最有效方法,但我认为这是一个很好的自我改进项目。