Python中的多线程队列
我需要在一个网页应用中执行一些耗时的任务。因为这些任务可能会运行几分钟,所以它们必须在多个线程上运行,这样用户就不用一直盯着加载页面等好几分钟。
所以我觉得使用一个多线程的队列会是个不错的解决方案。你放入队列的每个对象实例都应该在自己的线程上运行。
我对如何开始有个基本的想法,但我敢打赌,已经有很多更好的解决方案存在,或者在你们的脑海里;)
这是我想的队列应该是什么样子的:
[
[
obj_instance_1,[
(function_1, function_args_1, priority_1),
(function_2, function_args_2, priority_2),
]
],
[
obj_instance_2,[
(function_n, function_args_n, priority_n),
]
]
]
其中 [] 是列表,() 是元组。
6 个回答
2
kamaelia 提供了一些工具,可以帮助我们更简单地处理同时进行的任务,比如线程或进程等。
2
你只需要让你的元素继承自 threading.Thread,并使用 Conditions() 来实现 生产者-消费者 系统。
我会维护一个线程池,里面有自己的并发控制和一个 add() 方法,这样其他代码就可以把线程添加到这个池子里。
这是 Python 线程的文档,基本上和其他线程实现的规则差不多……没有什么可怕的。