栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用try语句如何避免出现竞争情况?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用try语句如何避免出现竞争情况?

比赛条件,当然,你的程序和文件上运行一些其他的代码之间(竞争状态总是需要至少两个平行的进程或线程,看到这个细节)。这意味着仅在以下两种情况下使用

open()
而不是
exists()
可能真正有用:

  1. 您检查是否存在由某些后台进程创建或删除的文件(但是,如果您在Web服务器中运行,则通常意味着您的进程有很多副本并行运行以处理HTTP请求,因此对于Web应用程序来说,即使没有其他程序,也可能出现这种情况)。
  2. 可能有一些正在运行的恶意程序正在尝试通过在您希望文件存在的时刻破坏文件来破坏您的代码。

exists()
只需执行一次检查。如果文件存在,则可以在
exists()
返回后一微秒内将其删除
True
。如果没有文件,则可以立即创建。

但是,

open()
不仅要测试文件是否存在,还要打开文件(并且自动执行这两个操作,因此在检查和打开之间不会发生任何事情)。通常,当有人打开文件时,无法将其删除。这意味着
with
您可能会完全确定:由于文件已打开,因此它现在确实存在。尽管只有在内部才是正确的
with
,并且在
with
块退出后仍可能会立即删除文件,但是将需要文件存在的
with
代码放入其中可以确保代码不会失败。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/617515.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号