Python Gevent 永久运行 greenlet

1 投票
1 回答
1147 浏览
提问于 2025-04-19 00:41

我想写一个程序,里面有几个可以一直运行的函数。我考虑使用gevent来实现这个目的。请问长时间运行的greenlet会有什么问题吗?

我正在写一个这样的程序

from gevent.pool import Pool
from gevent import sleep    

class A(object):
    def a(self):
        while True:
            try:
                * do something *
            except:
                * log exception * 
            sleep(1)

if __name__ == "__main__":
    pool = Pool(5)
    obj = A()
    pool.spawn(obj.a)
    pool.join()

1 个回答

1

除了这个例子中没有定义obj以外,其他部分应该都能正常工作。看起来在这个例子中,你不会遇到任何阻塞的问题,也不会有全局解释器锁(GIL)的问题。这些是我在长时间运行的绿色线程(greenlets)中看到的唯一问题。还有就是内存泄漏,但这不是特定于线程的问题。

撰写回答