关于python中多线程方法的体系结构问题

时间:2011-11-16 00:18:13

标签: python multithreading

我正在创建一个永远运行的套接字服务器,并将文件推送到远程服务。这些文件很大很多,因此创建一个可以帮助移动的线程脚本。关于如何处理这个问题,我有几个问题。

在这个设置中,我将使用python提供的Queue,因为它实现了线程安全的事务,而我没有任何工作。我现在会任意将线程数设置为10,但稍后会用它来查找甜蜜数字。

我应该采取哪种方法:

我应该创建10个在填充队列时清醒的线程,并在它为空时休眠吗? (消费者生产者类型交易)

或者我应该生成线程,直到达到max,10,然后睡眠主程序直到线程结束,然后唤醒主线程再生成一个线程,然后重复直到队列为空。

这两种方法的优点/缺点是什么?感谢。

1 个答案:

答案 0 :(得分:2)

持续创建和终止线程是昂贵的,容易出错,并且如果在性能和可靠性方面都尽可能的话,最好避免使用。来自“主程序”的微管理线程只是一个非常糟糕的主意,当你可以,嗯,不这样做。现代语言/环境/库提供线程池来尝试阻止开发人员做一些可怕的事情,例如不断创建和销毁线程,等待线程完成CPU /睡眠循环,等待线程完成事件处理程序中的DoEvents循环,将线程存储在列表中并摆弄它们以试图管理它们,在没有必要时明确地终止线程以及许多其他令人讨厌的做法。

计划'A'。推送文件路径,远程URI和所有其他需要的东西(例如,错误消息字符串:),用于文件推送到某个对象实例并将其推送到阻塞10个线程的阻塞生产者 - 消费者队列。让线程管理自己。