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