นี่เป็นวิธีแก้ปัญหาหากสคริปต์ของคุณทำงานในหลาม (หรือคุณสามารถสร้างคำสั่ง python ให้เรียกใช้ก่อนคำสั่งถัดไป) - ฉันพบปัญหาที่แน่นอนนี้เมื่อสัปดาห์ที่แล้วและแม้ว่าฉันจะหาวิธีแก้ปัญหาที่ดีแล้วก็ตาม แพ็คเกจหลามที่ง่ายและสะอาดและอัปโหลดไปยัง PyPI แน่นอนคุณสามารถล็อค__file__
ได้โดยไม่ต้องคิดให้ชื่อทรัพยากรที่กำหนดเองเพื่อล็อค
ติดตั้งด้วย: pip install quicklock
การใช้มันง่ายมาก:
[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'!
ดู: https://pypi.python.org/pypi/quicklock