В многопроцессорной программе я хочу заблокировать определенную функцию на основе аргументов, например,
def calculate(spreadsheet):
_do_calc(spreadsheet)
Теперь то, что я хочу сделать, основано на электронной таблице, заблокируйте функцию, чтобы несколько таблиц могли работать одновременно, нодва вызова в одной электронной таблице будут заблокированы, например,
def calculate(spreadsheet):
with Lock(spreadsheet.id):
_do_calc(spreadsheet)
Возможно ли это с помощью многопроцессорной обработки. Блокировка, если нет, каковы альтернативы?Я имею в виду использование блокировки файлов на основе fcntl.
Редактировать : Выше была очень упрощенная версия моей проблемы, в основном я не использую многопроцессорный модуль, у меня N различных скриптов, которыеработать с некоторыми данными, а иногда и с теми же данными, которых я хотел избежать, поэтому хотел каким-то образом синхронизировать их в некоторых точках, например, все они могут импортировать модуль mylock и использовать mylock.lock для синхронизации
import mylock
def calculate(spreadsheet):
with mylock.lock(spreadsheet.id):
_do_calc(spreadsheet)
Чтоя могу написать mylock.lock различными способами, в настоящее время я просто создаю файл с именем spreadsheet.id и удаляю его при снятии блокировки.