Skip to main content

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


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)

Uploaded Source

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

Hashes for py-singleton-1.0.0.tar.gz
Algorithm Hash digest
SHA256 9922a69f6e6b9390e5c1b3d2b39e119d5fcffa92d9c3145de3b8533a93077fb7
MD5 23eb82e74fc101a5001b9db8af18455c
BLAKE2b-256 e94925659b2596ab0e536c168a90358e9cb4a70fd776955a6174a7fde76a9264

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page