停止执行另一个代码的代码
Code to stop execution of another code
我有一个 R
代码可以进行一些数据分析和 returns TRUE/FALSE
。
有时,输入数据太大,代码只保留 运行.
我想要一个脚本来监控我的数据分析代码,如果它没有 return 任何东西,比如说 600 seconds
,那么它会停止 运行 代码并做一些事情否则。
就像在 R console
上按 STOP
按钮一样。
我知道 stop
、break
、exit
等。但是这些不会有用,因为代码不会到达这些语句,因为它仍然是 运行 其数据分析循环。
这并不是真正使用脚本来监视另一个进程的解决方案,但在 Linux 上,您可以在开始分析之前使用 ulimit -t 300
,例如,使用 Rscript code.R
。
那么当 cpu 时间超过 300 秒时,内核将终止您的作业。请注意,这适用于在 ulimit 命令之后从同一控制台执行的所有命令。
您可以使用 setTimeLimit()
并让您的主脚本调用辅助脚本,该辅助脚本将在开始时具有此功能。
setTimeLimit(elapsed = 10)
for(i in c(1:100)){
cat(i,"\n")
Sys.sleep(1)
}
这是您期望它如何工作的示例。
10 秒后我的工作将达到时间限制,尽管循环想要计数到 100,每秒增加一个增量。
另一个不是真的答案。有时我必须循环遍历数据集的每一行,或者我必须将 10 000 个数据集合并为一个。
当我在循环内执行时,我会隐藏
k <- k + 1
print(k)
所以我可以跟踪我的代码,看看我已经做了多少。 Ofcoruse 你可以改进这个并跟踪循环中每个 i 之间的时间 proc.time(
我有一个 R
代码可以进行一些数据分析和 returns TRUE/FALSE
。
有时,输入数据太大,代码只保留 运行.
我想要一个脚本来监控我的数据分析代码,如果它没有 return 任何东西,比如说 600 seconds
,那么它会停止 运行 代码并做一些事情否则。
就像在 R console
上按 STOP
按钮一样。
我知道 stop
、break
、exit
等。但是这些不会有用,因为代码不会到达这些语句,因为它仍然是 运行 其数据分析循环。
这并不是真正使用脚本来监视另一个进程的解决方案,但在 Linux 上,您可以在开始分析之前使用 ulimit -t 300
,例如,使用 Rscript code.R
。
那么当 cpu 时间超过 300 秒时,内核将终止您的作业。请注意,这适用于在 ulimit 命令之后从同一控制台执行的所有命令。
您可以使用 setTimeLimit()
并让您的主脚本调用辅助脚本,该辅助脚本将在开始时具有此功能。
setTimeLimit(elapsed = 10)
for(i in c(1:100)){
cat(i,"\n")
Sys.sleep(1)
}
这是您期望它如何工作的示例。 10 秒后我的工作将达到时间限制,尽管循环想要计数到 100,每秒增加一个增量。
另一个不是真的答案。有时我必须循环遍历数据集的每一行,或者我必须将 10 000 个数据集合并为一个。
当我在循环内执行时,我会隐藏
k <- k + 1
print(k)
所以我可以跟踪我的代码,看看我已经做了多少。 Ofcoruse 你可以改进这个并跟踪循环中每个 i 之间的时间 proc.time(