5

问题版本 1,我们可以让 pr_fun 进程在不等待 ch_fun() 完成的情况下重新启动吗

ch_fun <- function() {Sys.sleep(10)}
pr_fun <- function() {ch_fun(); return("Done")}
pr_fun()

问题实际版本

R会话1作为svSocket服务器

library(svSocket)
startSocketServer(port = 9875,local=FALSE)

R会话2作为svSocket客户端

con <- socketConnection(port = 9875,host="127.0.0.1")
evalServer(con,"Sys.sleep(20)")

R会话3作为svSocket客户端

con <- socketConnection(port = 9875,host="127.0.0.1")
evalServer(con,"a=10")

如果我们运行会话 2 的代码行并且当服务器正在处理 Sys.sleep 调用时,我们会迅速将会话 3 的代码行放入会话 3 并中止调用,它仍然会得到处理。我们可以通过检查对象“a”是否已创建来在服务器端进行检查。

我的观点是我们不必等待作业在第 3 次会话中完成,它仍然被处理,所以不知何故,作业堆积在会话端,我们不必等待作业完成,只需将它们发送到服务器并中止等待过程并继续前进。我们可以使用 Ctrl+C 或 Esc 手动中止,但如何在函数中执行此操作。我希望 pr_fun 在服务器会话中调用 ch_fun 并立即返回它。

4

0 回答 0