[Tutor] Python Daemons

Cameron Simpson cs at cskk.id.au
Tue Aug 1 21:40:20 EDT 2017


On 01Aug2017 14:48, Daniel Bosah <dbosah at buffalo.edu> wrote:
>I'm following an online tutorial about threading. This is the code I've
>used so far:

In addition to the other replies, which mention the general computing "daemon" 
notion and the "python-daemon" library which aids making such python programs 
into well behaved daemons, I've got a couple of remarks about your code:

[...]
>def threader():
>    while True:
>        worker = q.get()
>        portscan(worker)
>        q.task_done

task_done is a method. So "q.task_done()". Your code will parse and run but the 
method will not get called; "q.task_done" with no brackets just mentioned the 
method without running it (sometimes a program wants to talk about a method or 
function but not call it right now).

>    t.daemon() = True # want it to be a daemon

The Thread.daemon is a property, not a method. So you set it like this:

    t.daemon = True

In the context of a thread, the daemon attribute implies that the daemon is a 
"worker" process, which does not need special shutdown. When your program ends, 
the Python runtime does not actually terminate until all _non_ damon Threads 
have finished. By marking a Thread as a daemon you're saying that its activity 
is not important after program exit. This is probably not the case for your 
tutorial task.

Like others, I recommend learning Python 3. It is broadly the same language but 
it is current.

Cheers,
Cameron Simpson <cs at cskk.id.au> (formerly cs at zip.com.au)


More information about the Tutor mailing list