Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:网络文件的并发访问(读/写)_Python_Database_Concurrency_Shelve - Fatal编程技术网

Python:网络文件的并发访问(读/写)

Python:网络文件的并发访问(读/写),python,database,concurrency,shelve,Python,Database,Concurrency,Shelve,使用Python(我使用的是v3.4),我将创建一个程序,该程序将在最多20台同时连接到同一网络的机器上运行。 这些机器将不时需要访问网络并进行一些操作(创建/删除/修改文件) 我目前的计划是: 网络将有一个文件夹“db” 我将使用shelve模块将我的共享数据(一个包含一些路径名和一些日志信息的少于3000个条目的简单字典)保存在此文件夹中。由于没有那么多数据,它是一个方便的模块,速度足够快 为了避免网络上的多台计算机同时进行操作(并避免冲突),计算机必须在执行任何操作之前锁定网络上的搁置文

使用Python(我使用的是v3.4),我将创建一个程序,该程序将在最多20台同时连接到同一网络的机器上运行。 这些机器将不时需要访问网络并进行一些操作(创建/删除/修改文件)

我目前的计划是:

  • 网络将有一个文件夹“db”
  • 我将使用shelve模块将我的共享数据(一个包含一些路径名和一些日志信息的少于3000个条目的简单字典)保存在此文件夹中。由于没有那么多数据,它是一个方便的模块,速度足够快
  • 为了避免网络上的多台计算机同时进行操作(并避免冲突),计算机必须在执行任何操作之前锁定网络上的搁置文件(无论如何,它们也需要更新此文件),并且仅在操作结束时解锁(必要时更新其内容)
我的问题是shelve没有一种方便的并发访问或锁定机制。我了解我的两种可能性是:

  • 或者我不使用shelve,而是使用另一个模块来管理我的简单数据库(例如:sqlite3,但它比简单shelve模块稍微复杂一点)
  • 或者我创建了一个锁机制,可以在多台机器的网络上工作(到目前为止,我还没有找到一个看起来完全可靠的模块)
其他要求(如有可能)包括:

  • 它将主要用于Windows,但我希望解决方案是跨平台的,这样我就可以在Linux上重复使用它
  • 网络文件系统可以通过标准资源管理器(在linux/windows中)通过“\Machine\Folder”等地址访问任何内容。它可以是文件服务器,也可以只是其中一台计算机上的共享文件夹
有什么建议吗


谢谢,多平台,锁定。您最好的选择是PortalLocker()。我们已经广泛使用了它,它是一个赢家

将涉及什么操作系统,以及什么类型的网络文件系统?您好。好问题。我在最后一段加了它