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

2024-05-29 06:16:27 发布

您现在位置:Python中文网/ 问答频道 /正文

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']中的键,但是其他的分割也是可能的。其基本思想是工作之间不存在冲突。它隐含地假设jobs添加/聚合数据,因此字典(如果使用Pandas,则为数据帧)的融合总是导致数据聚合,即计算数据的“外部连接”。在


Tags: 数据io服务器示例sqlitefoo架构my
1条回答
网友
1楼 · 发布于 2024-05-29 06:16:27

简单的DIY,可能是片状的

分层锁定,即先锁定/,然后锁定/foo并解锁{},然后锁定/foo/bar并解锁{}。对/foo/bar进行更改并将其解锁。在

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

复杂的DIY

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

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

相关问题 更多 >

    热门问题