【问题标题】:How to kill all Greenlets or end "While not Queue.empty()" loop?如何杀死所有 Greenlets 或结束“虽然不是 Queue.empty()”循环?
【发布时间】:2015-11-17 13:57:06
【问题描述】:

在这种情况下如何在不使用 sys.exit() 的情况下结束 Gevent? 我不需要完成列表中的所有元素,我只需要使用队列直到找到一个字符串。

tasks = Queue()
while not tasks.empty():
            string = tasks.get()
            con = validate(string)
            if con == True:
                break

中断语句不起作用。 我正在像这样启动 Greenlets:

gevent.spawn(worker) 

我不能使用 sys.exit() 因为我想遍历一个列表并为每个对象启动一个新的 Gevent 实例。

【问题讨论】:

    标签: python python-2.7 while-loop queue gevent


    【解决方案1】:

    我不熟悉 python,但尝试使用布尔值作为 while 循环的额外条件:

    tasks = Queue()
    found = False
    while not found and not tasks.empty():
        string = tasks.get()
        found = validate(string)
    

    【讨论】:

    • 谢谢!这确实是打破循环的解决方案。不过,我仍在寻找如何阻止其他 greenlets 的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 2016-06-14
    相关资源
    最近更新 更多