Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #64527

Re: SIngleton from __defaults__

From Ned Batchelder <ned@nedbatchelder.com>
Subject Re: SIngleton from __defaults__
Date 2014-01-22 14:18 -0500
References <26ff768d-349c-48cd-a46f-25343807e18a@googlegroups.com> <mailman.5843.1390407541.18130.python-list@python.org> <d4053869-c668-4b5d-8e58-25b3650307df@googlegroups.com>
Newsgroups comp.lang.python
Message-ID <mailman.5848.1390418313.18130.python-list@python.org> (permalink)

Show all headers | View raw


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

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

SIngleton from __defaults__ Asaf Las <roegltd@gmail.com> - 2014-01-22 08:07 -0800
  Re: SIngleton from __defaults__ Chris Angelico <rosuav@gmail.com> - 2014-01-23 03:18 +1100
    Re: SIngleton from __defaults__ Asaf Las <roegltd@gmail.com> - 2014-01-22 08:37 -0800
      Re: SIngleton from __defaults__ 88888 Dihedral <dihedral88888@gmail.com> - 2014-01-22 09:23 -0800
      Re: SIngleton from __defaults__ Ned Batchelder <ned@nedbatchelder.com> - 2014-01-22 14:18 -0500
        Re: SIngleton from __defaults__ Asaf Las <roegltd@gmail.com> - 2014-01-22 11:52 -0800
      Re: SIngleton from __defaults__ Johannes Schneider <johannes.schneider@galileo-press.de> - 2014-01-23 14:36 +0100
      Re: SIngleton from __defaults__ Dave Angel <davea@davea.name> - 2014-01-23 11:56 -0500
      Re: SIngleton from __defaults__ Terry Reedy <tjreedy@udel.edu> - 2014-01-23 19:10 -0500
      Re: SIngleton from __defaults__ Johannes Schneider <johannes.schneider@galileo-press.de> - 2014-01-24 09:20 +0100
    Re: SIngleton from __defaults__ Asaf Las <roegltd@gmail.com> - 2014-01-22 13:10 -0800
    Re: SIngleton from __defaults__ Asaf Las <roegltd@gmail.com> - 2014-01-22 14:34 -0800

csiph-web