我有一个模拟系统集合的julia程序。 基本上在每个实现中我都将可观察量记录为时间和写入的函数, 每个实现,结果到一个文件。
我最近注意到我有一个文件,我写的结果没有正确的
close(filename)
命令。可以肯定的是,如果我没有正确关闭我用来编写的文件,我的数字会有任何错误吗?
由于朱莉娅在编译时没有引发错误,我想知道这是否由朱莉娅暗中完成
答案 0 :(得分:2)
该文件将在脚本结束时自动关闭(或者,如果在函数中打开,则在函数末尾)。
更准确地说,当文件指针超出范围时,它将被关闭。
更准确地说,当文件指针被垃圾收集时,它将被关闭。
答案 1 :(得分:1)
在Julia进程退出之前,将关闭所有IOStream
并刷新缓冲区。但是,IOStream
将被关闭的时间是不可预测的。
具体机制如下。 open
函数创建文件IOStream
,向垃圾收集器注册 finaliser 。 Julia定期调用垃圾收集器,它会破坏任何无法访问的数据结构;如果它销毁IOStream
,它会运行关闭文件的关联终结器。
由于垃圾收集器的运行时间是不可预测的,因此最好自己明确关闭IOStream
:如果忘记调用{{{},则应将终结机制视为一项额外的安全措施。 1}}。