【发布时间】:2019-08-20 08:28:56
【问题描述】:
我处于以下情况:库中的算法使用一些随机性,并且通常非常快但有时会卡住(例如,这对于 SAT 求解器很常见)。
我想做以下事情:启动任务的许多实例,并保持第一个成功的结果,杀死其他的。在 Julia 伪代码中:
futures = [@spawn myfunction(mydata)]
while true
i = findnext(isready, futures)
if i != nothing
result = fetch(i)
foreach(kill_task, futures)
break
end
sleep(0.1)
end
但我找不到像“kill_task”这样的东西; Distributed.del_client 听起来很有可能,但似乎没有这样做。
作为奖励,最好避免轮询(睡觉等)
请注意,修改“myfunction”要求它自己死是不可接受的,它必须被杀死(因为它在外部库中)。
【问题讨论】:
-
好的,我的第一个问题的部分答案:“isready”表示未来是否准备好输出。
标签: parallel-processing task julia