Python 在gevent中,如何转储所有正在运行的Greenlet的堆栈跟踪?

Python 在gevent中,如何转储所有正在运行的Greenlet的堆栈跟踪?,python,gevent,Python,Gevent,出于调试的目的,我想迭代所有的Greenlet并获取它们的跟踪跟踪——如何使用gevent做到这一点 基本上,我想做gevent的等价物。您可以使用gc模块迭代堆上的所有对象并搜索greenlet。greenlet将堆栈跟踪存储为属性gr\u frame import gc import traceback from greenlet import greenlet for ob in gc.get_objects(): if not isinstance(ob, greenlet):

出于调试的目的,我想迭代所有的Greenlet并获取它们的跟踪跟踪——如何使用gevent做到这一点


基本上,我想做gevent的等价物。

您可以使用
gc
模块迭代堆上的所有对象并搜索greenlet。greenlet将堆栈跟踪存储为属性
gr\u frame

import gc
import traceback
from greenlet import greenlet

for ob in gc.get_objects():
    if not isinstance(ob, greenlet):
        continue
    if not ob:
        continue
    log.error(''.join(traceback.format_stack(ob.gr_frame)))
Gevent的内置“print_run_info”功能将打印所有Greenlet的堆栈,包括它们产生的堆栈:

import gevent
gevent.util.print_run_info()

文档:

问题明确表示“我想做与此等效的gevent。”