Re: [LAD] Python assistance - threads (my favorite)

From: <fons@email-addr-hidden>
Date: Fri Oct 15 2010 - 02:10:54 EEST

On Thu, Oct 14, 2010 at 03:04:54PM -0700, Patrick Shirkey wrote:

> In a bit of a time crunch. Can anyone tell me how to do this properly?
>
> I would like to have a threaded timer to run "cmd" after 5 seconds.
> However cmd is normally triggered like this:
>
> os.system(cmd)
>
> But there seems to be an issue with calling os.system(cmd) from
> subprocess.popen.
>
> ==========================
>
> def do_popen(self, *args):
> subprocess.Popen(args[0], shell=True)
>
>
> def other function
>
> cmd = 'spd-say -t female2 "' + audioText + '"'
> args = shlex.split(cmd)
>
> # Add 5 second delay for first view to allow existing speech processes to
> finish
> print "do_speech: ",delay
> if delay:
> print "do_speech: delayed start"
> t = threading.Timer(5.0, self.do_popen(cmd))
> t.start()
> else :
> print "do_speech: immediate start"
> self.do_popen(cmd)
>
> ======================

A bit confusing - you mention os.system() but is not used at all
(nor should it if you use subprocess.Popen().

You didn't tell what happens...

I suspect that if you do this in a function the thread 't' will be
destroyed as soon as that function returns. Making 't' global could
help. (no guarantee -- speculating).

Ciao,

-- 
FA
There are three of them, and Alleline.
_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@email-addr-hidden
http://lists.linuxaudio.org/listinfo/linux-audio-dev
Received on Fri Oct 15 04:15:02 2010

This archive was generated by hypermail 2.1.8 : Fri Oct 15 2010 - 04:15:02 EEST