首页 > 解决方案 > 如何测量 Julia 中函数的 @async 运行时?

问题描述

我的代码如下,

function getImages()
    @async for i in 1:30
        load("path/to/image$i.jpg");
    end
end
   
@time @sync getImages()

这是在 Julia 中测量异步运行时的正确方法吗?我不想相信它,因为在同步运行中它需要 0.1 秒才能完成,而使用 @async 代码它只显示 0.000017 秒。

标签: asynchronousjulia

解决方案


你需要重新组织你的代码

julia> function getImages()
           @sync for i in 1:30
               @async begin
                   sleep(rand())
                   println("Image ", i)
               end
           end
       end
getImages (generic function with 1 method)

julia> @time getImages()
Image 2
Image 5
Image 15
Image 30
Image 4
Image 7
Image 20
Image 3
Image 22
Image 18
Image 11
Image 29
Image 9
Image 24
Image 16
Image 6
Image 8
Image 14
Image 19
Image 21
Image 13
Image 1
Image 17
Image 10
Image 27
Image 25
Image 23
Image 28
Image 26
Image 12
  0.894566 seconds (650 allocations: 37.406 KiB)

推荐阅读