gevent.util --低级公用设施#
低级公用事业。
- class GreenletTree(greenlet)[源代码]#
基类:
object表示绿叶树。
在Gevent中, 起源 绿色小树通常是树的中心,因此这棵树主要是沿着 spawning_greenlet 尺寸。
此对象有一个显示此层次结构的小型str窗体。这个
format方法可以输出更多详细信息。确切的输出是未指明的,但旨在供人阅读。使用
forest方法获取所有线程的根greenlet树,以及current_tree获取当前线程的根greenlet树。- classmethod current_tree() GreenletTree[源代码]#
返回
GreenletTree对于当前线程。
- classmethod forest() sequence[源代码]#
返回一个序列
GreenletTree,每个运行本机线程一个。
- format(details=True)[源代码]#
喜欢
format_lines但返回一个字符串。
- format_lines(details=True)[源代码]#
为greenlet树返回一系列行。
- 参数:
details (bool) -- 如果为真(默认值),则在输出中包含更多信息性详细信息。
- greenlet = None#
这棵树代表的绿叶树。
- is_current_tree = False#
这个树是当前线程的根吗?
- class assert_switches(max_blocking_time=None, hub_only=False)[源代码]#
基类:
object上下文管理器,用于确保代码块切换greenlet。
这与 monitoring thread 但范围仅限于WITH语句的主体。如果主体中的代码不屈服于中心(并且不会引发异常),那么在退出上下文管理器时,
AssertionError将被提升。这对于单元测试和调试很有用。
- 参数:
例子::
# This will always raise an exception: nothing switched with assert_switches(): pass # This will never raise an exception; nothing switched, # but it happened very fast with assert_switches(max_blocking_time=1.0): pass
在 1.3 版本加入.
在 1.4 版本发生变更: 如果引发异常,则它现在包含有关阻塞持续时间和此对象参数的信息。
- class wrap_errors(errors, func)[源代码]#
基类:
object使函数返回异常而不是引发异常的帮助器。
因为greenlet未处理的每个异常都将被记录,所以需要防止非错误异常离开greenlet。这可以用一个简单的
try/except结构:def wrapped_func(*args, **kwargs): try: return func(*args, **kwargs) except (TypeError, ValueError, AttributeError) as ex: return ex
此类提供了一个将其写入一行的快捷方式:
wrapped_func = wrap_errors((TypeError, ValueError, AttributeError), func)
它也能保存
__str__和__repr__原来的功能。调用此函数将从 func ,这样它就可以捕获 错误 (安)
BaseException子类或元组BaseException子类),并将其作为值返回。
- format_run_info(thread_stacks=True, greenlet_stacks=True, limit=None) [str][源代码]#
请求有关当前进程运行线程的信息。
这是一个调试实用程序。它的产出除了用于人类消费外,没有其他保证。
- 参数:
thread_stacks (bool) -- 如果为真,则包括用于运行线程的堆栈。
greenlet_stacks (bool) -- 如果为真,则包括用于运行greenlet的堆栈。(将始终打印生成堆栈。)如果将此设置为“假”,则可以在不减少总体信息的情况下显著减少输出量,如果 thread_stacks 是真的,您可以将greenlet与线程关联(使用
thread_ident打印值)。limit (int) -- 如果给予,直接传给
traceback.format_stack. 如果没有给定,则默认为cpython下的整个堆栈,pypy下的较小堆栈。
- 返回:
一个文本行序列,详细说明运行线程和greenlet的堆栈。(一个greenlet将复制一个线程、当前线程和greenlet。如果有多个正在运行的线程,则当前greenlet的堆栈可能在多个greenlet中被错误地复制。)有关
gevent.Greenlet对象也将被返回。
在 1.3a1 版本加入.
在 1.3a2 版本发生变更: 更名为
dump_stacks为了反映这样一个事实,这将打印有关greenlet的附加信息,包括它们的繁殖堆栈、父级、本地变量和任何繁殖树本地变量。在 1.3b1 版本发生变更: 增加了 thread_stacks , greenlet_stacks 和 限制 参数。
- print_run_info(thread_stacks=True, greenlet_stacks=True, limit=<default value>, file=None)[源代码]#
呼叫
format_run_info并将结果打印到 file .如果 file 没有给出,
sys.stderr将被使用。在 1.3b1 版本加入.