python文档说在多线程环境中,EAFP方法优于LBYL。
是否存在多线程失败的情况? 我的意思是说我想从目录中读取文件。 我可以这样写:
try:
with open('Path/to/file', 'r') as content_file:
content = content_file.read()
except ... :
是否有一种方法可以在程序读取文件时将其删除?
答案 0 :(得分:3)
try中的每个操作是否都是Python中的原子?
不,try
没有添加任何形式的原子性。它所做的就是确保except
或finally
子句在适当时执行。
是否有一种方法可以在程序读取文件时将其删除?
是的,您可能会失去对该文件的访问权限(例如,如果它位于网络文件系统上,并且您在阅读时网络连接中断)。也就是说,无论您的程序是否是多线程的,都可能发生这种情况,因此线程在这里并没有真正改变。
答案 1 :(得分:2)
try try中的每个操作都是原子
没有。重点是"请求许可,然后做事情"绝对不是原子的,而取决于操作和所需的原子程度,"做事情"单独可能是原子的。