数据互补
以事件池为载体,在各个事件流之间传输数据
有了数据关联,就意味着我们可以在并发一个事件流的时候让多个task进行数据交换。但是在进行对事件池的并发时,我们应该如何去对多个event作数据的传输呢?
答案就是数据互补。
数据互补
数据互补可以在一个事件流被并发时,将事件流内指定的task的返回值传输到事件流所属事件池中,另外一些指定事件池的returns字典中。
您可以在事件流的association成员中配置该事件流的数据互补系统。
格式:
如上所示,一个task的返回值可以传输到多个事件流内。在同时进行数据关联和数据互补时,task会首先将数据放入所属事件流的returns字典中,然后再将数据从returns字典中抽出进行数据互补。这意味着您可以使用returnFunc对互补的数据进行额外操作。
在传输方的task完成传输后,数据只会被送往指定事件流的returns字典中。所以您需要对其他事件流内的task进行数据关联的设置。将其association成员设为传输方task的名称。最后,整个数据互补的流程就结束了。您也可以使用接收方task的associationFunc进行对数据的二次处理。
一切数据互补的操作都由底层单位task实现,event和eventPool只作成员变量的配置参考。task在查找别的事件流并在其returns字典中放入数据时,会先定位到self.event,再定位到self.event.eventPool,在self.event.eventPool.events中查找需要关联的事件流。所以如果想要进行数据互补,task和事件流的所属事件流、事件池必须要设置正确,并确保所有单位都有一个独立的名称。
给所有task,event都设立一个独立的名称是一个非常好的习惯。因为它们靠各自的名字辨认彼此。
通用流程
了解了数据互补后,以下是数据互补常用的流程代码。
Last updated