在python中读写csv文件时如何使用线程锁定?

时间:2019-05-29 08:22:07

标签: python-3.x multithreading csv locking

我正在努力完善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文件,我希望它不会被读取,而在我关闭文件后,它会被读取。

我期待您的答复! 谢谢。

1 个答案:

答案 0 :(得分:0)

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