如何使用选项暂停和恢复以在Julia中保持跟踪

如何使用选项暂停和恢复以在Julia中保持跟踪,julia,Julia,我正在努力从计算角度分析我的代码。main函数以某种复杂的方式运行嵌套循环,我正在搜索计算时间过长的值,以便找出它们的特殊情况 这与我在标题中的原始问题有关。假设有一个循环,将数字从1汇总到10^20(只是假设),如何(如果可能的话)随意暂停操作,并在屏幕上获得有关当前进度和所用时间的输出。稍后,如果需要,继续计算,而不损失进度 我认为它可能是一个有用的工具,在你不知道如何估计计算所需时间的情况下,你的目标是一定的精度。或者,如果需要的话,通常只用于长时间的计算。您正在寻找的功能称为调试,可以从

我正在努力从计算角度分析我的代码。main函数以某种复杂的方式运行嵌套循环,我正在搜索计算时间过长的值,以便找出它们的特殊情况

这与我在标题中的原始问题有关。假设有一个循环,将数字从
1汇总到10^20
(只是假设),如何(如果可能的话)随意暂停操作,并在屏幕上获得有关当前进度和所用时间的输出。稍后,如果需要,继续计算,而不损失进度


我认为它可能是一个有用的工具,在你不知道如何估计计算所需时间的情况下,你的目标是一定的精度。或者,如果需要的话,通常只用于长时间的计算。

您正在寻找的功能称为调试,可以从Juno使用,更多信息可在此处找到:

其他有用的选择包括:

  • 日志记录
    模块
  • @show
    @debug
    宏来显示变量、状态等
  • 序列化
    函数以存储变量的状态(可能稍后恢复)
  • 最后但并非最不重要的一点是,如果您不想使用IDE,则有一个
    Debugger.jl
    ()包。下面是一个示例用法:

    using Debugger
    
    function foo(n)
        x = n+1
        ((BigInt[1 1; 1 0])^x)[2,1]
    end
    
    @enter foo(20)
    

    谢谢你的回复。我在使用serialize时遇到了问题,你能用一个简单的例子来编辑你的答案吗?这里有一个简单的例子:
    使用serialize;x=5;打开(“data.jld”、“w”)do f;序列化(f,x);结束
    这里有许多可用的场景和方法。这是一个很好的开始:但是,如果你仍然有问题,只需问一个简单的问题:-)