📜  Julia 中的任务

📅  最后修改于: 2022-05-13 01:54:58.634000             🧑  作者: Mango

Julia 中的任务

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

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

下面是一些任务示例:

TasksUse
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.
@asyncIt 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 步:使用 for range 找出数字的总和。然后创建任务。

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

schedule()函数的使用

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

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

istaskdone()函数的使用

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

@async() 方法的使用

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

这里@time宏在不等待任务的情况下执行,在这种情况下,睡眠两秒钟以完成。 @async将表达式包装在任务中。这意味着,对于其范围内的任何内容,Julia 都会开始运行此任务。

检查当前任务

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