📜  Julia 中的任务

📅  最后修改于: 2021-11-25 04:41:14             🧑  作者: Mango

任务是一种控制流功能,允许以灵活的方式暂停和恢复计算。它对于 IO 密集型任务、网络文件等很有用。任务的好处是更少的内存和快速的处理。它提供了一个名为task()的函数来创建任何函数作为任务。

最初的任务可以稍后恢复,此时它将从停止的地方开始。 Julia 还支持通过等待和获取等操作在任务之间进行通信。 @task会将表达式包装在 Task 中而不执行它,并返回 Task。任务是一个可迭代对象,因此产生的值可以在循环中使用。

下面是一些任务示例:

Tasks Use
istaskstarted(task)  Tell whether a task has started executing.
 schedule() To add tasks to be automatically scheduled
istaskdone(task) Tell whether a task has exited.
@async It will start a task and return, without waiting for the result of that task being available
current_task() Get the currently running Task.

这些是我们可以在 Julia 编程中使用的方法。

istaskstarted()函数

如果我们要判断一个任务是否已经开始执行。打开 Julia 命令行并按照以下说明操作:

步骤 1:使用范围来找出数字的总和。然后创建任务。

步骤 2:然后使用istaskstarted( )函数检查任务是否已启动。它给出输出 false 表示任务尚未开始执行。

schedule()函数

要开始执行任务,我们需要添加 schedule 和 yield函数。在这里,我们使用schedule()yield() (切换到调度器)来添加要自动调度的任务。

在这里,您可以看到任务已启动,因此输出结果为真。

istaskdone()函数

如果我们要确定任务是否已退出,请使用istaskdone()函数。在下图中,输出为 true,这意味着任务已开始退出。

@async() 方法的使用

此方法将启动一个任务并返回,无需等待该任务的结果可用

这里@time宏不等待任务就执行,在这种情况下,休眠两秒钟才能完成。 @async将表达式包装在任务中。这意味着对于属于其范围内的任何内容,Julia 将启动此任务运行。

检查当前任务

要获取当前正在运行的任务,请使用函数current_task()。