Python线程间共享文件访问

2024-06-09 07:22:52 发布

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

我有一个线程周期性地写入一个文件(writeThread),另一个线程(readThread)异步读取文件。readThread可以使用不同的句柄访问文件而不会把任何事情搞砸吗?在

如果没有,python是否有一个可以由writeThread使用但不阻止readThread的共享锁?我不喜欢简单的非共享锁,因为文件访问的顺序是毫秒,而writeThread写入周期的顺序是相同的(周期取决于一些外部参数)。因此,可能会出现这样的情况:即使writeThread可以释放锁,它也会立即重新获取锁,从而导致饥饿。在

我能想到的一个解决方案是保存文件的多个副本,一个用于读取,另一个用于写入,从而避免整个情况的发生。然而,所涉及的文件大小可能会变得很大,从而使这种方法不可取。在

有其他的选择吗?或者这是一个糟糕的设计?在

谢谢


Tags: 文件方法参数顺序副本情况解决方案句柄
1条回答
网友
1楼 · 发布于 2024-06-09 07:22:52

可以,您可以多次打开该文件并获得对它的独立访问权限。每个文件对象都有自己的缓冲区和位置,例如,一个对象上的搜索不会弄乱另一个。当你读同一个程序的时候,要非常小心。例如,在write对象刷新之前,读取器不会看到附加到文件末尾的写操作。在读写器刷新之前,读卡器不会看到对现有数据的重写。写入不是原子的,所以如果您正在写记录,读者可能会看到部分记录。读卡器上的异步选择或轮询事件可能很奇怪。。。不确定那件事。在

另一种选择是mmap,但我还没有充分利用它来了解问题所在。在

相关问题 更多 >