演员模型pykka③-运行时
线程
安装
除了 Pykka 本身和 Python 标准库之外,默认的线程运行时没有依赖项。
API
ThreadingFuture类
ThreadingFuture
类实现 Future
类通过使用 ThreadingActor
.类
future的实现基于 queue.Queue
队列
future不拷贝对象,它是一个 set()
它是可靠的setter方法只使用不可变的对象,或者拷贝一个对象,在设置之前。[翻译好像有点问题,这里没翻译对]
原文是
get(timeout=None)方法
获取被包装的值
如果封装值是异常,则会抛出它而不是返回
如果timeout
是None
,默认情况下,该方法将一直阻塞,直到它得到回复,可能是永远。如果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在守护线程上运行。