[Python-3000] About "daemon" in threading module

Steven Bethard steven.bethard at gmail.com
Thu Sep 4 22:05:31 CEST 2008


On Thu, Sep 4, 2008 at 1:56 PM, Guido van Rossum <guido at python.org> wrote:
> On Thu, Sep 4, 2008 at 8:47 AM, Antoine Pitrou <solipsis at pitrou.net> wrote:
>> Jesus Cea <jcea <at> jcea.es> writes:
>>>
>>> First we had "thread.setDaemon()". This was not PEP8, so Python 3.0
>>> renamed it to "thread.set_daemon()". Lately Python 3.0 changes the
>>> method to an attribute "thread.daemon".
>>>
>>> I think the last change is risky, because you can mistype and create a
>>> new attribute, instead of set daemon mode. Since daemon mode is only
>>> usually visible when things goes wrong (the main thread dies), you can
>>> miss the bug for a long time.
>>
>> I've never understood why the "daemon" flag couldn't be passed as one of the
>> constructor arguments. It would make code shorter, and avoid the mistyping risk
>> mentioned by Jesus. It also sounds saner, since you shouldn't change the flag
>> after the thread is started anyway.
>
> As to the why question, this was done to match the Java Thread class.
> I don't want to speculate why the Java API was designed this way --
> possibly it was a relic of an earlier API version in Java, but
> possibly there's a reason I can't fathom right now. After all, there
> are excellent reasons why start() is a separate call...

This may or may not be relevant, but since Java doesn't support
argument defaults, it's often easier to define a very simple
constructor, and use a bunch of setters if you want to modify the
defaults. I've done this myself when programming in Java to avoid the
exponential number of constructor overloads that would be necessary to
do defaults properly.

Of course, I don't know whether or not that had anything to do with
this particular Java decision.

Steve
-- 
I'm not *in*-sane. Indeed, I am so far *out* of sane that you appear a
tiny blip on the distant coast of sanity.
 --- Bucky Katt, Get Fuzzy


More information about the Python-3000 mailing list