【发布时间】:2017-06-15 04:56:23
【问题描述】:
我只是想知道 python 模块文件锁的细节及其在某些情况下的行为。
首先,线程如何处理with: 语句。如果多个线程调用with:,它是逐个线程锁定的吗?是否也有可能两个线程同时获取锁?
其次,当我使用with: 时,我必须在使用后清除锁定吗? with:语句执行完后锁会自动清零吗?
第三,我的代码中有一个实例,我认为必须创建一个文件然后立即锁定。目前我正在使用这个:
channel_file = open(os.path.join('channels', username), 'w+')
with filelock.FileLock(os.path.join('channels', username)):
channel_file.write(json.dumps({'rate': reobj.group(1),'time': reobj.group(2)}))
如果有可能另一个线程从文件创建时就可以读取该文件,这是否可以防止这种情况发生?
这也带来了第四点。使用with:时文件锁是否会锁定读取访问权限?
【问题讨论】:
标签: python multithreading with-statement file-locking filelock