Python中是否有任何使用无服务器架构在 NFS 上支持并发写入的软件包?
我在一台拥有超级计算机的环境中工作,多个作业并行保存数据。虽然我可以将这些计算的结果保存在单独的文件中,并在以后合并它们的结果,但这需要我编写一个读者,它知道我在计算机中分割计算的具体方式,以便它知道如何拼接所有内容在正确的最终数据结构中。
上次我检查 SQLite 时,不支持 NFS 中的并发。 SQLite还有其他选择吗?
注意:无服务器是指避免显式启动处理IO请求的另一个服务器(在NFS之上)。我知道NFS使用客户端 - 服务器架构,但是这个文件系统已经我使用的超级计算机的一部分。我不需要保持自己。我正在寻找的是支持并发IO的包或文件格式,而无需我设置任何(附加)服务器。
以下是我将并行运行的两个作业的示例:
作业1 使用以下数据从头开始填充my_dict
,并将其保存到file
:
my_dict{'a'}{'foo'} = [0.2, 0.3, 0.4]
作业2 还会从头开始使用以下数据填充my_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])]
请注意,拼接操作是自动的。在这种特殊情况下,我选择在计算中分割my_dict['a']
中的密钥,但其他分割是可能的。根本的想法是,作业之间没有冲突。它隐含地假设作业添加/聚合数据,因此字典的融合(如果使用Pandas,数据帧)总是导致聚合数据,即计算“外部联接”数据。
答案 0 :(得分:1)
分层锁定 - 即先锁定/
,然后锁定/foo
并解锁/
,然后锁定/foo/bar
并解锁/foo
。对/foo/bar
进行更改并解锁。
这允许其他进程访问其他路径。 /
上的锁定争用相对较小。
调整无锁或无等待算法,例如RCU。指针成为符号链接或包含其他路径列表的文件。
http://www.rdrop.com/users/paulmck/rclock/intro/rclock_intro.html https://dank.qemfd.net/dankwiki/index.php/Lock-free_algorithms