Я застрял в поиске решения проблемы многопроцессорности ниже
У меня есть класс Record в модуле record.py. Ответственность класса записей заключается в обработке входных данных и сохранении их в файл JSON.
Класс Record имеет метод put () для обновления файла JSON.
Класс записи инициализируется в декораторе класса. Декоратор применяется к большинству классов различных подмодулей.
Decorator извлекает информацию о каждом декорируемом методе и отправляет данные в метод put () класса Record.
Метод put () класса Record затем обновляет файл 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()