On 1/22/14 11:37 AM, Asaf Las wrote:
On Wednesday, January 22, 2014 6:18:57 PM UTC+2, Chris Angelico wrote:
On Thu, Jan 23, 2014 at 3:07 AM, Asaf Las <r....@gmail.com> wrote:

Why not simply:
def get_singleton(x = SomeClass()):
     return x
Or even:
singleton = SomeClass()
? Neither of the above provides anything above the last one, except
for late creation.

ChrisA

Actually need was to have some interface to running independent threads
to give same and once created object always.

For first  - SomeClass's object will be created whenever there will be
call to get_singleton().

No, the value for a function argument's default is computed once when the function is defined. Chris is right: get_singleton will always return the same object.

For second, again it is free to create it whenever someone (thread)
wish.

Chris is right here, too: modules are themselves singletons, no matter how many times you import them, they are only executed once, and the same module object is provided for each import.


Hmmm, use case was to create persistent counter in multithreaded app
accessing single file where incrementing integer is stored.
When my imagination expanded it onto multiprocessing mess i ended up
using sqlite access to DB in exclusive transaction mode.
But this was not pythonic :-)

Asaf



--
Ned Batchelder, http://nedbatchelder.com

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to