Python中的无服务器并发写访问

Jos*_*osh 7 python hpc binaryfiles

Python中是否有任何使用无服务器架构支持NFS 并发写入的软件包?

我在一个拥有超级计算机的环境中工作,多个作业并行保存数据.虽然我可以将这些计算的结果保存在单独的文件中,并在以后合并它们的结果,但这需要我编写一个读者,它知道我在计算机中分割计算的具体方式,以便它知道如何拼接所有内容在最终的数据结构中正确.

上次我检查过SQLite不支持NFS中的并发性.SQLite还有其他选择吗?

注意:无服务器是指避免显式启动处理IO请求的另一台服务器(在NFS之上).我知道NFS使用客户端 - 服务器架构,但是这个文件系统已经是我使用的超级计算机的一部分.我不需要保持自己.我正在寻找的是支持并发IO的包或文件格式,而无需我设置任何(附加)服务器.

例:

以下是我将并行运行的两个作业的示例:

  • 作业1my_dict从头开始填充以下数据,并将其保存到file:

    my_dict{'a'}{'foo'} = [0.2, 0.3, 0.4]

  • 作业2my_dict从头开始填充以下数据,并将其保存到file:

    my_dict{'a'}{'bar'} = [0.1, 0.2]

我想稍后加载file,并在以下内容中看到以下内容my_dict:

> my_dict{'a'}.items()
[('foo', [0.2, 0.3, 0.4]), ('bar', [2, 3, 5])]
Run Code Online (Sandbox Code Playgroud)

请注意,拼接操作是自动的.在这种特殊情况下,我选择my_dict['a']在计算中拆分键,但其他拆分也是可能的.根本的想法是工作之间没有冲突.它隐含地假设作业添加/聚合数据,因此字典的融合(如果使用Pandas,数据帧)总是导致聚合数据,即计算数据的"外部联接".

Dim*_*nek 1

简单的 DIY,可能很脆弱

分层锁定——即首先锁定/,然后锁定/foo和解锁/,然后锁定/foo/bar和解锁/foo。对其进行更改/foo/bar并解锁。

这允许其他进程访问其他路径。锁争用/相对较小。

复杂的DIY

采用无锁或无等待算法,例如RCU。指针变成符号链接或包含其他路径列表的文件。

http://www.rdrop.com/users/paulmck/rclock/intro/rclock_intro.html https://dank.qemfd.net/dankwiki/index.php/Lock-free_algorithms