Beachten Sie, dass ich untersucht habe, wie exklusive Dateien zwischen Prozessen in Python gesteuert werden. Das Dokument enthält eine Sperrdatei
This package is deprecated. It is highly preferred that instead of using this code base that instead
fasteners
oroslo.concurrency
is used instead.
Versuchen Sie es mit Verbindungselementen.
Es befindet sich in PyPI, sodass die Installation mit pip
einfach ist:
pip install fasteners
Von den Beispielen im Dokument ist diesmal die Interprozesssperre Ich werde es versuchen. Es gibt eine Methode, um "mit" zu verwenden, und eine Methode, um es zu einem Dekorateur zu machen.
import os
import time
import fasteners
def main():
pid = os.getpid()
while True:
print("Waiting...")
with fasteners.InterProcessLock('/tmp/tmp_lock_file'):
print('Locked by {}'.format(pid))
time.sleep(2)
time.sleep(1)
if __name__ == '__main__':
main()
Der Teil innerhalb von "with" wird ausschließlich ausgeführt.
import os
import time
import fasteners
@fasteners.interprocess_locked("/tmp/tmp_lock_file")
def action_with_lock():
pid = os.getpid()
print("{} has a lock".format(pid))
time.sleep(1)
if __name__ == '__main__':
action_with_lock()
Klicken Sie hier, wenn Sie ausschließlich eine Funktion ausführen möchten. Beide sind einfach zu implementieren. Dies ist praktisch, da es nicht erforderlich ist, "/ tmp / tmp_lock_file" im Voraus zu erstellen.
Recommended Posts