singleton pattern for python 2 and 3
Project description
py-singleton
Singleton pattern for python 2 & 3.
Install
pip install py-singleton
Test
in the root folder, run pytest:
pytest
Dependencies
None
unit test needs pytest.
API
-
Apply class decorator singleton to any class;
-
Expected behaviors:
- class can be instantiated as usual, but only one instance is created;
- apis to access the class instance:
@singleton class Server(object): pass srv = Server()
or
srv = Server.instance()
- the function _init_() of decorated class will be called once and only once when the instance is created.
Example
from py_singleton import singleton
@singleton
class A(object):
count = 0
def __init__(self):
A.count += 1
a1 = A()
a2 = A()
a3 = A.instance()
assert A.count == 1
assert a1 is a2
assert a1 is a3
Limitation
For best performance, the code to create instance is not thread-safe, however, after the instance is created it should be safe for multi-threading.
It is recommended to call instance() once during the initial phrase of your app in a single thread.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
py-singleton-1.0.0.tar.gz
(2.9 kB
view details)
File details
Details for the file py-singleton-1.0.0.tar.gz
.
File metadata
- Download URL: py-singleton-1.0.0.tar.gz
- Upload date:
- Size: 2.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9922a69f6e6b9390e5c1b3d2b39e119d5fcffa92d9c3145de3b8533a93077fb7 |
|
MD5 | 23eb82e74fc101a5001b9db8af18455c |
|
BLAKE2b-256 | e94925659b2596ab0e536c168a90358e9cb4a70fd776955a6174a7fde76a9264 |