如何在 python 中读取和写入 csv 文件时使用线程锁



我正在努力完善dummy blockchain代码,并希望使文件无法read and write csv,如果它已经被使用。我该怎么办?

我已经把start()join()acquire()release()等放在我能想到的所有地方,但我根本没有工作。曾经收到一条消息" Permission denied ",但是,当我打开文件时,它仍然给了我文件中的信息。(所有其他功能都正常工作。

def readBlockchain(blockchainFilePath, mode = 'internal'): 
get_lock.acquire()
print("readBlockchain is called")
importedBlockchain = [] 
try:
    with open(blockchainFilePath, 'r',  newline='') as file: 
        blockReader = csv.reader(file)
        for line in blockReader:
            block = Block(line[0], line[1], line[2], line[3], line[4], line[5],line[6])
        importedBlockchain.append(block) 
    print("Pulling blockchain from csv...")
    get_lock.release()
    return importedBlockchain
except: 
    if mode == 'internal': 
        blockchain = generateGenesisBlock()             
        importedBlockchain.append(blockchain) 
        writeBlockchain(importedBlockchain) 
        get_lock.release()
        return importedBlockchain
    else:
        get_lock.release()
        return None 

我希望如果我打开了csv文件,它不会被读取,并且在我关闭文件后被读取。

我期待你的回答!谢谢。

看看互斥锁,它使您能够获取和锁定资源,并在作业完成后解锁它。
链接 : 互斥锁

最新更新