我現在有一個全球性的鎖定= threading.Lock(),並進行下面的調用。在serialRemove,我有Python的並行執行threading.Lock無法正常運轉的好意
Lock.acquire()
print(f+' if')
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+' else')
Lock.release()
(注意,在哈希值h是總是假在我的情況),在通話效果的 部分: 10.txt如果
11.txt如果
20.txt如果
我不明白如果我圍繞代碼鎖定可能有兩個f +'if'打印。有沒有保護的代碼塊,最好沒有簡單的方法獲得:
10.txt如果
10.txt其他
11.txt如果
11.txt其他
20.txt如果
20.txt否則
作爲一個方面說明,你真的不應該叫你的鎖'鎖'。它使事情變得混亂,因爲這也是類型的名稱(儘管類型名稱在此處是合格的)。 (如果您按照變量和函數的小寫名稱的PEP 8風格,除內置類型之外,它甚至不會出現。) – abarnert
您使用的是'Parallel'的庫。它看起來不像['multiprocessing'](http://docs.python.org/3/library/multiprocessing.html)或['concurrent'](http://docs.python.org/3/library /concurrent.futures.html#module-concurrent.futures)從stdlib或[Parallel Python](http://www.parallelpython.com)。我可以考慮一些不太常用的庫,它們有一個名爲'Parallel'的類,它也可能有一個名爲'delayed'的函數,但是沒有辦法猜出你的意思。 – abarnert