gpt4 book ai didi

julia - IJulia 中的 ProgressBar 打印每一行

转载 作者:行者123 更新时间:2023-12-05 03:22:13 24 4
gpt4 key购买 nike

目前正在学习Julia,一直在Jupyter notebook环境中练习。但是,ProgressBar 包(类似于 python 中的 TQDM)是每隔一行更新一次,而不是在同一行更新(附图)。有没有什么办法解决这一问题?谢谢。

更新:这是我编写的完整函数。

function spike_rate(raw_dat, width)

N = size(raw_dat)[1]
domain = collect(1:N);
spike_rat = zeros(N);

for i in ProgressBar(1:N)
dx = i .- domain;
window = gaussian.(dx, width);
spike_rat[i] = sum(window .* raw_dat) ./ width;
end

return spike_rat;

end

enter image description here

最佳答案

这似乎是一个 known issue不幸的是,使用 ProgressBars.jl。目前尚不清楚是什么改变使这些进度条不再正常工作,但是 the maintainer's comment说 tqdm 使用“一个自定义的 ipywidget”来使它适用于 Python 库,并且还没有为 Julia 包实现。

为了扩展@Zitzero 对 ] up 的提及,调用 Pkg.update() 也打印进度条 - 所以建议使用机制 Pkg 用于它。 Pkg 有一个名为 MiniProgressBars 的内部模块,用于处理此输出。


编辑:Tim Holy 的 ProgressMeter包看起来维护得很好,并且比依赖没有文档的内部非导出 Pkg 子模块更好的选择。因此,我建议在下面使用 ProgressMeter。

自述文件提到了一个 caveat关于在 Jupyter 中使用进度条打印附加信息,这可能也适用于 MiniProgressBar。因此,使用 ProgressMeter,并将进度输出与其他相关输出分离到不同的单元格,似乎是最佳选择。


(不推荐)

using Pkg.MiniProgressBars

bar = MiniProgressBar(; indent=2, header = "Progress", color = Base.info_color(),
percentage=false, always_reprint=true)
bar.max = 100

# start_progress(stdout, bar)
for i in 1:100
sleep(0.05) # replace this with your code
# print_progress_bottom(stdout)
bar.current = i
show_progress(stdout, bar)
end
# end_progress(stdout, bar)

这基于Pkg 的使用方式,from this file .注释掉的行(start_progressprint_progress_bottomend_progress)在Pkg 中的原始用法,但是目前尚不清楚它们做了什么,在这里它们似乎只是弄乱了输出——也许我错误地使用了它们,或者 Jupyter notebooks 可能只支持 MiniProgressBars 使用的一部分 ANSI 代码。

关于julia - IJulia 中的 ProgressBar 打印每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72769482/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com