任务是一种控制流功能,允许以灵活的方式暂停和恢复计算。它对于 IO 密集型任务、网络文件等很有用。任务的好处是更少的内存和快速的处理。它提供了一个名为task()的函数来创建任何函数作为任务。
最初的任务可以稍后恢复,此时它将从停止的地方开始。 Julia 还支持通过等待和获取等操作在任务之间进行通信。 @task会将表达式包装在 Task 中而不执行它,并返回 Task。任务是一个可迭代对象,因此产生的值可以在循环中使用。
Syntax: task(func)
Parameters:
First create task to execute Function
下面是一些任务示例:
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()。