使用线程处理列表

时间:2016-08-14 08:13:01

标签: python multithreading loops signals cpu

我的代码有一个循环来检查列表,如果列表中有项目,它将处理它们并从列表中删除它们。这些项目由另一个帖子不断插入到列表中。

以下是代码:

while True:
    for item in list:
        Process(item)
        Remove(item)

问题1:

我上面的内容有效,但问题是它对cpu非常密集 我可以在代码中添加类似'time.sleep'的东西,但是这个程序需要立即处理列表中的项目而不会有任何延迟。如何在cpu上减少密集度(请记住,我正在同时运行另一个线程)。

问题2

我希望在列表为空时停止循环运行,并在列表中添加某些内容时继续处理。我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

似乎queue模块对您有用。它实现了多生产者,多用户队列,并允许线程之间的同步,而无需繁忙等待。

另请参阅使用此queue模块的Solution to producer and consumer problem in python