আমি গত সপ্তাহে এই সঠিক সমস্যার মধ্যে দৌড়েছি এবং যদিও আমি কিছু ভাল সমাধান খুঁজে পেয়েছি তবে আমি খুব সহজ এবং পরিষ্কার পরিচ্ছন্ন অজগর প্যাকেজ তৈরি করার সিদ্ধান্ত নিয়েছি এবং এটি পিপিআইতে আপলোড করেছি। এটি টেন্ডো থেকে পৃথক যে এটি কোনও স্ট্রিং সংস্থার নাম লক করতে পারে। যদিও আপনি অবশ্যই __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