JuliaLogging / TerminalLoggers.jl

Logging sinks and utilites for interactive terminals
MIT License
41 stars 10 forks source link

Threadsafe TerminalLogger #41

Closed c42f closed 2 years ago

c42f commented 2 years ago

Added a big lock around TerminalLogger state to make it safe to use from multiple threads.

High-contention example to run interactively with julia -t8

using ProgressLogging
@sync begin
    for i=1:8
        Threads.@spawn @progress name="task $i" threshold=0.00005 for j=1:10000
            #sleep(0.001)
        end
    end
end

Fixes #18

Also

codecov-commenter commented 2 years ago

Codecov Report

Merging #41 (7795636) into master (9ed38e2) will decrease coverage by 0.25%. The diff coverage is 76.47%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master      #41      +/-   ##
==========================================
- Coverage   95.53%   95.28%   -0.26%     
==========================================
  Files           5        4       -1     
  Lines         269      318      +49     
==========================================
+ Hits          257      303      +46     
- Misses         12       15       +3     
Impacted Files Coverage Δ
src/TerminalLogger.jl 94.11% <76.47%> (-1.94%) :arrow_down:
src/StickyMessages.jl 100.00% <0.00%> (ø)
src/TerminalLoggers.jl
src/ProgressMeter/ProgressMeter.jl 91.66% <0.00%> (+0.96%) :arrow_up:
src/ProgressBar.jl 100.00% <0.00%> (+11.76%) :arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 9ed38e2...7795636. Read the comment docs.