我目前有一个 global Lock = threading.Lock()
,并拨打以下电话:
Parallel(n_jobs=2)(delayed(serialRemove)(dir,c,b,l,f) for f in os.listdir(dir))
使用工作库。中serialRemove
,我有
Lock.acquire()
print(f+' begin')
if h in hashes:
try:
os.remove(path)
if l: print('Removing ' + path)
removed += 1
except os.error:
print('Encountered error removing file')
else:
hashes.add(h)
print(f+' end')
Lock.release()
部分调用导致:
10.txt begin
11.txt begin
20.txt begin
我不明白如果我将代码包围在 Lock 中,怎么会有两个 begin 打印。有什么简单的方法可以保护代码块,所以理想情况下我得到:
10.txt begin
10.txt end
11.txt begin
11.txt end
20.txt begin
20.txt end