asynchronous - 如何测量 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 秒。
解决方案
你需要重新组织你的代码
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)
推荐阅读
- azure - 根据上次成功运行日期在数据工厂中过滤文件
- amazon-web-services - 用于在 AWS 上长时间运行查询的无服务器解决方案
- angular - 当属性'x'是私有的时有角度->错误“不能在'y'组件之外使用,因为x是私有的”但是当它是公共的时它显示x在y中不存在
- kubernetes - Kubernetes - 如何将信任库路径和密码传递给 JVM 参数
- c++ - 如何让 for 循环在 txt 文件中进行搜索?
- php - symfony 4 - 与多对多关系的语义错误
- python - 从输入中获取最小值和最大值
- javascript - 动态更新 url 中的搜索字符串
- java - Spring MVC + Hibernate:无法更新实体“加载需要加载的 ID”
- c# - 如何使用 csv helper c# 修改 csv 表中的值