ifired
@ifired

Как сделать блокировку доступа к разделяемым ресурсам для 2 программ?

Есть две копии программы на Python, используют один функционал на двоих. Доступ получают поочередно, точнее должны получать. На данный момент использовал вариант с созданием файла в качестве метки блокировки, но все равно иногда проскакивает одновременный доступ. Все возможные ошибки исключил, проблема в самой блокировке. Возможно, есть модули для python+win получше portalocker? Или какие-то другие идеи.
class ML():
    def __init__(self):
			self.mk = 0
			self.fn = 'lock\\mark'
    def __enter__(self):
			os.chdir(os.path.dirname(os.__file__))
			while 1:
				try:
					os.rename(self.fn,self.fn)
					self.mk = open(self.fn,'w')
					portalocker.lock(self.mk, portalocker.LOCK_EX)
					print 'LOCK>>>>>'
					break
				except:
					pass
    def __exit__(self, type, value, traceback):
			while 1:
				try:
					self.mk.close()
					print '<<<<<RELEASE'
					break
				except:
					pass
  • Вопрос задан
  • 110 просмотров
Пригласить эксперта
Ответы на вопрос 1
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы