Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何更新其他程序正在读取的数据文件而不损坏数据?(Linux/Python)_Python_Linux_Atomic_Cp_Mv - Fatal编程技术网

如何更新其他程序正在读取的数据文件而不损坏数据?(Linux/Python)

如何更新其他程序正在读取的数据文件而不损坏数据?(Linux/Python),python,linux,atomic,cp,mv,Python,Linux,Atomic,Cp,Mv,我一直在制作一个Python程序,它将数据实时累积到.h5文件中,以便其他程序员可以随时读取该文件 我想确保文件更新时不会损坏,以防其他程序员在我添加数据时读取文件 为了避免这种情况,我想出了一个解决方案,复制($cp)原始文件(foo.h5)并创建temp_foo.h5,然后在temp_foo.h5中添加数据后,用temp_foo.h5覆盖($mv)foo.h5) 要说清楚,它是这样的: $ cp ./foo.h5 ./temp_foo.h5 # Here, I update temp_fo

我一直在制作一个Python程序,它将数据实时累积到
.h5
文件中,以便其他程序员可以随时读取该文件

我想确保文件更新时不会损坏,以防其他程序员在我添加数据时读取文件

为了避免这种情况,我想出了一个解决方案,复制(
$cp
)原始文件(
foo.h5
)并创建
temp_foo.h5
,然后在
temp_foo.h5
中添加数据后,用
temp_foo.h5
覆盖(
$mv
foo.h5

要说清楚,它是这样的:

$ cp ./foo.h5 ./temp_foo.h5

# Here, I update temp_foo.h5 file. Then: 

$ mv ./temp_foo.h5 ./foo.h5
然而,这种策略似乎效率很低,我有几点担心

  • 如果一个程序员在我处理(
    $cp
    )的时候正在阅读原始的
    /foo.h5
    ?好吧,
    $mv
    是原子的,但
    $cp
    不是。在Python脚本读取时复制文件会导致数据损坏吗

  • 我提出的这个策略太庞大了。是否有其他防止腐败的最佳做法来处理这种情况