Julia 中的任务
任务是一种控制流功能,它允许以灵活的方式暂停和恢复计算。它对于 IO-bound 任务、网络文件等很有用。任务的好处是内存更少,处理速度更快。它提供了一个名为task()的函数来创建任何函数作为任务。
原始任务稍后可以恢复,此时它将从中断的地方继续。 Julia 还支持通过 wait 和 fetch 等操作在 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 步:使用 for range 找出数字的总和。然后创建任务。
第 2 步:然后使用istaskstarted( )函数检查任务是否已启动。它给出的输出为 false 表示任务尚未开始执行。
schedule()函数的使用
要开始执行任务,我们需要添加 schedule 和 yield函数。在这里,我们使用schedule()和yield() (切换到调度程序)来添加要自动调度的任务。
在这里,您可以看到任务已启动,因此输出结果为真。
istaskdone()函数的使用
如果我们想确定一个任务是否已经退出,请使用istaskdone()函数。在下图中,输出为真,这意味着任务已开始退出。
@async() 方法的使用
此方法将启动一个任务并返回,而无需等待该任务的结果可用
这里@time宏在不等待任务的情况下执行,在这种情况下,睡眠两秒钟以完成。 @async将表达式包装在任务中。这意味着,对于其范围内的任何内容,Julia 都会开始运行此任务。
检查当前任务
要获取当前正在运行的任务,请使用函数current_task()。