Python中的无服务器并发写访问
Python中是否有任何包支持使用无服务器架构在NFS上进行并发写操作 我在一个拥有超级计算机的环境中工作,多个作业并行保存数据。虽然我可以将这些计算的结果保存在单独的文件中,并在以后合并它们的结果,但这需要我编写一个读者,了解我在作业之间分割计算的具体方式,以便它知道如何正确地缝合最终数据结构中的所有内容 上次我检查时,SQLite不支持NFS中的并发。SQLite还有其他替代品吗 注意:无服务器意味着避免显式启动另一台处理IO请求的服务器(位于NFS之上)。我知道NFS使用客户机-服务器体系结构,但是这个文件系统已经是我使用的超级计算机的一部分了。我不需要养活自己。我要找的是一个包或文件格式,它支持并发IO,而不需要我设置任何(额外)服务器 例子: 下面是我将并行运行的两个作业的示例:Python中的无服务器并发写访问,python,binaryfiles,hpc,Python,Binaryfiles,Hpc,Python中是否有任何包支持使用无服务器架构在NFS上进行并发写操作 我在一个拥有超级计算机的环境中工作,多个作业并行保存数据。虽然我可以将这些计算的结果保存在单独的文件中,并在以后合并它们的结果,但这需要我编写一个读者,了解我在作业之间分割计算的具体方式,以便它知道如何正确地缝合最终数据结构中的所有内容 上次我检查时,SQLite不支持NFS中的并发。SQLite还有其他替代品吗 注意:无服务器意味着避免显式启动另一台处理IO请求的服务器(位于NFS之上)。我知道NFS使用客户机-服务器体系
- 作业1用以下数据从头开始填充
,并将其保存到my_dict
文件中:
my_dict{'a'}{'foo'}=[0.2,0.3,0.4]
- 作业2还使用以下数据从头开始填充
,并将其保存到my_dict
文件中:
my_dict{'a'}{'bar'}=[0.1,0.2]
文件
,并在我的目录
中查看以下内容:
> my_dict{'a'}.items()
[('foo', [0.2, 0.3, 0.4]), ('bar', [2, 3, 5])]
请注意,缝合操作是自动的。在这个特殊的例子中,我选择在整个计算过程中分割my_dict['a']
中的键,但也可以进行其他分割。基本思想是,工作之间不存在冲突。它隐式地假设作业添加/聚合数据,因此字典(如果使用Pandas,则为数据帧)的融合总是会导致聚合数据,即计算数据的“外部联接”。简单的DIY,可能是不可靠的
分层锁定——即首先锁定/
,然后锁定/foo
并解锁/
,然后锁定/foo/bar
并解锁/foo
。对/foo/bar
进行更改并将其解锁
这允许其他进程访问其他路径。/
上的锁争用相对较小
复杂的DIY
采用无锁或无等待算法,例如RCU。指针变成符号链接或包含其他路径列表的文件
您的问题非常令人困惑,因为您谈到NFS,然后使用了术语“无服务器”。因为NFS总是有一个服务器,所以没有意义。你能重新措辞吗?谢谢@Gabe-我已经更新了我的OP以解决你的问题。那么你想写的Python脚本将写入一个挂载的NFS卷?在这种安排下,您的python脚本就是客户端(不需要额外的服务器:)@JasonSperske correct。这是一个极其困难的问题。你不太可能找到任何已经写好的东西。