演员模型pykka③-运行时

线程

安装

除了 Pykka 本身和 Python 标准库之外,默认的线程运行时没有依赖项。

API

ThreadingFuture类

ThreadingFuture类实现 Future 类通过使用 ThreadingActor.类

future的实现基于 queue.Queue队列

future不拷贝对象,它是一个 set()它是可靠的setter方法只使用不可变的对象,或者拷贝一个对象,在设置之前。[翻译好像有点问题,这里没翻译对]

原文是

image-20220126210321807

get(timeout=None)方法

获取被包装的值

如果封装值是异常,则会抛出它而不是返回

如果timeoutNone,默认情况下,该方法将一直阻塞,直到它得到回复,可能是永远。如果timeout是整数或浮点数,该方法将等待timeout 几秒钟的回复,然后 raise pykka.Timeout异常。

可以多次检索封装的值。future只会在第一次访问该值时阻塞。

set(value=None)方法

设置封装的值。

参数value是任意类型或者None

当多次被调用时,会抛出异常

set_exception(exc_info=None)方法

设置被包装的异常

你能设置一个三元组的异常信息,这个会被sys.exc_info()函数返回,如果你不设置异常信息,sys.exc_info()函数会被调用,然后返回它自己的异常信息

换句话说,如果你从except块中调用set_exception方法,不传递任何参数,这时候你当前处理的异常将会自动被设置进入future对象中

pykka.ThreadingActor(*args,**kwargs)类

ThreadingActor 使用常规 Python 线程实现 Actor

use_daemon_thread= False

一个布尔值,表名此actor 是否作为守护线程执行 。这必须在pykka.Actor.start()调用之前设置,否则 RuntimeError会引发。

当没有活着的非守护线程时,整个 Python 程序退出。这意味着在守护线程上运行的参与者可能随时被中断,并且无法保证清理会完成或 pykka.Actor.on_stop()将被调用。

Actor 不会从创建它的 Actor 那里继承守护进程标志。它总是必须显式设置,以便actor在守护线程上运行。

posted @ 2022-02-14 19:08  南风丶轻语  阅读(71)  评论(0编辑  收藏  举报