【发布时间】:2020-04-15 14:52:53
【问题描述】:
我目前正在开发一个 SGE 集群,并且我的代码可以并行提交许多用 python 编写的作业。
我的代码末尾的输出是一组包含数字数据的文件。每个 python 作业执行一些计算,然后依次输出到每个文件。为了输出到文件,我的代码读入文件中的数据,将它计算的内容添加到数据中,然后输出回文件。
我的问题是这样的;因为所有作业都是并行运行的,并且所有作业都对每个输出文件都有贡献;我的工作相互冲突。我经常收到有关不兼容文件大小等的错误。我认为原因是有时两个作业会在同一时间尝试读取文件并发生冲突。
我的问题是:当并行运行(可能很多)多个作业时,每个作业都多次贡献于同一个文件,是否有一种好的做法可以确保它们不会同时尝试写入文件?这个问题有pythonic或SGE解决方案吗?
我天真的想法是有一个 txt 文件,其中包含一个 1 或 0 指示当前是否正在访问文件,并且只有当值设置为 @987654324 时作业才会写入文件@,并在输出时将值更改为1。这是一种不好的做法吗?/愚蠢的想法?
【问题讨论】:
-
这能回答你的问题吗? Locking a file in Python
标签: python file file-io sungridengine