julia - 如何在多个线程中绘图?
问题描述
我在@threads for 循环中创建绘图时遇到了问题。这是我的代码的简化版本:
import Plots
function main()
n_points::Int64=10
n_epochs::Int64=100
NP=100
mkdir("test")
lk::ReentrantLock=ReentrantLock()
i::Int64=0
Threads.@threads for _i in 1:n_points
data=rand(Float64,(n_epochs,NP)) # do some calculation here
lock(lk)
i+=1
println("------------------------------------")
println("run $i, thread $(Threads.threadid()), NP $NP")
p=Plots.plot(1:n_epochs, data, legend = false)
Plots.xlabel!(p,"epoch")
Plots.ylabel!(p,"data")
Plots.savefig(p,"./test/train_$i")
println("...plotted")
unlock(lk)
end
end
main()
使用锁这应该是线程安全的。但是,从带有 threadid()!=1 的线程创建的图中的刻度标签是错误的: 示例
我做错了什么还是值得一个错误报告?
解决方案
推荐阅读
- python-3.x - 如何为整个集合转换带有 int 字符的字符串?
- spring-cloud - 有没有办法防止 Spring Cloud Gateway 重新排序查询参数?
- javascript - 如何将这些过滤器按钮更改为下拉菜单?
- sql - tab_to_string [Error] 执行 (37: 13): ORA-06502: PL/SQL: numeric or value error: 字符串缓冲区太小
- python - Python:如何在 all() 中使用运算符?
- typescript - 正则表达式匹配降价标题但不匹配代码注释
- android - 在片段中使用 listview 并调用 dialer
- php - 添加 Nginx 配置文件并生成 let's encrypt using php
- mysql - MySQL - 快速查询但慢速存储过程
- python - 如何在 astropy.io.ascii.read 中指定单个列格式?