Ini adalah solusi jika skrip Anda berjalan dalam python (atau Anda dapat membuat perintah python untuk dijalankan sebelum perintah berikutnya) - Saya mengalami masalah yang sama minggu lalu, dan meskipun saya menemukan beberapa solusi yang baik, saya memutuskan untuk membuat sangat paket python sederhana dan bersih dan mengunggahnya ke PyPI. Anda pasti bisa mengunci __file__
agar tidak perlu berpikir untuk memberinya nama sumber daya khusus untuk dikunci.
Instal dengan: pip install quicklock
Menggunakannya sangat sederhana:
[nate@Nates-MacBook-Pro-3 ~/live] python
Python 2.7.6 (default, Sep 9 2014, 15:04:36)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from quicklock import singleton
>>> # Let's create a lock so that only one instance of a script will run
...
>>> singleton('hello world')
>>>
>>> # Let's try to do that again, this should fail
...
>>> singleton('hello world')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/nate/live/gallery/env/lib/python2.7/site-packages/quicklock/quicklock.py", line 47, in singleton
raise RuntimeError('Resource <{}> is currently locked by <Process {}: "{}">'.format(resource, other_process.pid, other_process.name()))
RuntimeError: Resource <hello world> is currently locked by <Process 24801: "python">
>>>
>>> # But if we quit this process, we release the lock automatically
...
>>> ^D
[nate@Nates-MacBook-Pro-3 ~/live] python
Python 2.7.6 (default, Sep 9 2014, 15:04:36)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from quicklock import singleton
>>> singleton('hello world')
>>>
>>> # No exception was thrown, we own 'hello world'!
Lihatlah: https://pypi.python.org/pypi/quicklock