gpt4 book ai didi

python - 如何在python中控制多个进程对文件的访问

转载 作者:行者123 更新时间:2023-12-01 12:17:30 26 4
gpt4 key购买 nike

我一直在寻找解决以下多处理问题的方法。

我在 record.py 模块中有一个类 Record。记录类的职责是处理输入数据并将其保存到 JSON 文件中。
Record 类有方法 put() 来更新 JSON 文件。

记录类在类装饰器中初始化。装饰器应用于各种子模块的大多数类。
装饰器提取其装饰的每个方法的信息,并将数据发送到 Record 类的 put() 方法。
Record 类的 put() 方法然后更新 JSON 文件。

问题是当不同的进程运行时,每个进程都会创建自己的记录对象实例,并且 Json 数据会因为
多个进程尝试更新同一个 json 文件。
此外,每个进程可能都有正在运行的线程尝试访问和更新相同的 JSON 文件。
请让我知道我该如何解决这个问题。

class Record():
def put(data):
# read json file
# update json file with new data
# close json file

def decorate_method(theMethod):
# Extract method details
data = extract_method_details(theMethod)

# Initialize record object
rec = Record()
rec.put(data)

class ClassDeco(cls):
# This class decorator decorates all methods of the target class

for method in cls(): #<----This is just a pseudo codebase
decorate_method()

@ClassDeco
class Test()
def __init__():
pass

def run(a):
# some function calls

if __name__ == "__main__":
t = Test()
p = Pool(processes=len(process_pool))
p.apply_async(t.run, args=(10,))
p.apply_async(t.run, args=(20,))
p.close()

最佳答案

您应该在读取和写入文件之前锁定文件。检查另一个与 python 中的文件锁定相关的问题:Locking a file in Python

关于python - 如何在python中控制多个进程对文件的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51207936/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com