a.py 覆盖写入当前时间到 file, b.py 读取 file 如果 a.py 与 b.py 分别独立循环运行,那么如何确保 a 写入时禁止 b 读取。防止读写同时发生?

2015 年 11 月 20 日
 meloncrashed
3423 次点击
所在节点    Python
18 条回复
Slienc7
2015 年 11 月 20 日
alw1329
2015 年 11 月 20 日
用.closed 查看文件是否关了,从而实现逻辑
Damnever
2015 年 11 月 20 日
fcntl 函数
meloncrashed
2015 年 11 月 20 日
@alw1329 a.py read file 时, b.py 直接检测 file.closed 是这样嘛?
meloncrashed
2015 年 11 月 20 日
@Damnever 多谢
alw1329
2015 年 11 月 20 日
可以吧
alw1329
2015 年 11 月 20 日
弄错了
meloncrashed
2015 年 11 月 20 日
@alw1329 我在外面上不了机,不同程序里面的同一文件对象的 状态应该无法传递吧?
a 程序读取 file,b 程序也读取 file,各自的 file 对象是不同的吧。

这哥们的模块应该是对的
@Damnever 貌似得用文件锁什么的
alw1329
2015 年 11 月 20 日
不过当 A 打开 xx 时,其实可以创建一个简易的文件群.xx.temp , B 想打开时,检测.xx.temp 是否存在,当 A 关闭时,删掉.xx.temp
ryd994
2015 年 11 月 20 日
ryd994
2015 年 11 月 20 日
另外,如果你单纯是需要传递数据的话,你应该用 named pipe
meloncrashed
2015 年 11 月 20 日
@alw1329 谢谢 这也是个思路
meloncrashed
2015 年 11 月 20 日
@ryd994 请问可以具体些吗 如何使用 named pipe,只知道 bash 下有 pipe 可以传输出至别的程序的输入
ryd994
2015 年 11 月 20 日
主要就是用 mkfifo ,其他和读写文件一样,但没有任何实际的磁盘操作。
具体自行 google
meloncrashed
2015 年 11 月 20 日
@ryd994 多谢
chzyer
2015 年 11 月 20 日
可以在读和写的时候获取文件锁,操作完毕后释放,至于用 python 怎么实现需要 google
meloncrashed
2015 年 11 月 21 日
@chzyer 谢谢
mind3x
2015 年 11 月 21 日
fcntl.flock()

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/237723

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX