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

2015-11-20 21:24:00 +08:00
 meloncrashed
2624 次点击
所在节点    Python
18 条回复
Slienc7
2015-11-20 21:35:02 +08:00
alw1329
2015-11-20 22:08:56 +08:00
用.closed 查看文件是否关了,从而实现逻辑
Damnever
2015-11-20 22:46:50 +08:00
fcntl 函数
meloncrashed
2015-11-20 22:52:17 +08:00
@alw1329 a.py read file 时, b.py 直接检测 file.closed 是这样嘛?
meloncrashed
2015-11-20 22:55:01 +08:00
@Damnever 多谢
alw1329
2015-11-20 22:56:48 +08:00
可以吧
alw1329
2015-11-20 22:59:57 +08:00
弄错了
meloncrashed
2015-11-20 23:02:49 +08:00
@alw1329 我在外面上不了机,不同程序里面的同一文件对象的 状态应该无法传递吧?
a 程序读取 file,b 程序也读取 file,各自的 file 对象是不同的吧。

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

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

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

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

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

© 2021 V2EX