当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R taskCallbackManager 创建R级任务回调管理器


R语言 taskCallbackManager 位于 base 包(package)。

说明

这提供了一个完全R- 用于管理在每个顶级任务结束时调用的回调或操作的语言机制。本质上,我们注册一个R来自该管理器的函数具有底层的本机 task-callback 机制,并且该函数在管理器的控制下处理调用其他 R 回调。该管理器由一组函数组成,这些函数访问共享变量来管理 user-level 回调列表。

用法

taskCallbackManager(handlers = list(), registered = FALSE,
                    verbose = FALSE)

参数

handlers

这可以是一个回调列表,其中每个元素都是一个列表,其中包含一个名为 "f" 的元素(回调函数)和一个名为 "data" 的可选元素,它是回调函数调用时提供给回调函数的第 5 个参数。被调用。通常不指定此参数,并且在创建管理器后使用add 注册回调。

registered

一个逻辑值,指示evaluate函数是否已在内部任务回调机制中注册。这通常是FALSE,第一次通过add函数添加回调时,evaluate函数会自动注册。通过为此参数指定 TRUE 并手动调用 addTaskCallback,可以控制函数何时注册。

verbose

一个逻辑值,如果是 TRUE ,则会导致将有关此调度管理器执行的某些活动的信息打印到控制台。这对于调试回调和处理程序本身很有用。

list 包含 6 个函数:

add()

向该管理器注册一个回调,为该函数提供一个可选的第 5 个参数、一个可选名称(通过该名称将回调存储在列表中)以及一个 register 参数,该参数控制 evaluate 函数是否在内部注册C-level 如有必要,调度机制。

remove()

按名称或位置/索引从管理器的回调集合中删除元素。

evaluate()

‘real’ 回调函数,已注册到 C-level 调度机制,并在此管理器的控制范围内调用每个 R-level 回调。

suspend()

设置管理器挂起状态的函数。如果它被挂起,则当任务完成时不会调用任何回调。通过为 status 参数指定逻辑值来设置状态。

register()

使用内部 C-level 调度机制注册 evaluate 函数的函数。这是由 add 函数自动完成的,但也可以手动调用。

callbacks()

返回此管理器维护的回调列表。

例子

# create the manager
h <- taskCallbackManager()

# add a callback
h$add(function(expr, value, ok, visible) {
                       cat("In handler\n")
                       return(TRUE)
                     }, name = "simpleHandler")

# look at the internal callbacks.
getTaskCallbackNames()

# look at the R-level callbacks
names(h$callbacks())

removeTaskCallback("R-taskCallbackManager")

参考

Duncan Temple Lang (2001) Top-level Task Callbacks in R, https://developer.r-project.org/TaskHandlers.pdf

也可以看看

addTaskCallbackremoveTaskCallbackgetTaskCallbackNames 和参考。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Create an R-level Task Callback Manager。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。