Skip to content

Commit 9206147

Browse files
authored
Add Base.close for TBLogger (#109)
* Add Base.close for TBLogger * Add finalizer for TBLogger * Add tests for closing and finalizer
1 parent e1c5ed2 commit 9206147

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

src/TBLogger.jl

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,16 @@ mutable struct TBLogger{P,S} <: AbstractLogger
55
global_step::Int
66
step_increment::Int
77
min_level::LogLevel
8+
9+
function TBLogger{P,S}(logdir::P,
10+
file::S,
11+
all_files::Dict{String, S},
12+
global_step::Int,
13+
step_increment::Int,
14+
min_level::LogLevel) where {P,S}
15+
lg = new{P, S}(logdir, file, all_files, global_step, step_increment, min_level)
16+
return Base.finalizer(Base.close, lg)
17+
end
818
end
919

1020

@@ -195,6 +205,18 @@ Returns the internal step counter of the logger.
195205
"""
196206
step(lg::TBLogger) = lg.global_step
197207

208+
"""
209+
close(lg)
210+
211+
Close the TBLogger `lg`, releasing all file handles.
212+
"""
213+
function Base.close(lg::TBLogger)
214+
# close open streams
215+
for k=keys(lg.all_files)
216+
close(lg.all_files[k])
217+
end
218+
end
219+
198220
"""
199221
reset!(lg)
200222

test/test_TBLogger.jl

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,31 @@ end
8989
close.(values(tbl.all_files))
9090
end
9191

92+
@testset "closing" begin
93+
tbl = TBLogger(test_log_dir*"run", tb_overwrite)
94+
TensorBoardLogger.add_eventfile(tbl, "pp")
95+
files = keys(tbl.all_files)
96+
97+
close(tbl)
98+
@test begin
99+
foreach(f -> rm(joinpath(test_log_dir*"run", f)), files)
100+
# rm will error if the file is still open
101+
true
102+
end
103+
104+
tbl = TBLogger(test_log_dir*"run", tb_overwrite)
105+
TensorBoardLogger.add_eventfile(tbl, "pp")
106+
files = keys(tbl.all_files)
107+
108+
tbl = nothing
109+
Base.finalize(tbl)
110+
@test begin
111+
foreach(f -> rm(joinpath(test_log_dir*"run", f)), files)
112+
# rm will error if the file is still open
113+
true
114+
end
115+
end
116+
92117
@testset "resetting" begin
93118
tbl = TBLogger(test_log_dir*"run", tb_overwrite)
94119
TensorBoardLogger.add_eventfile(tbl, "pp")

0 commit comments

Comments
 (0)