[Tutor] how to make a script do two things at once.

I-McTaggart, Peter peter.mctaggart at boeing.com
Mon Aug 22 05:28:38 CEST 2005

You might also try the following from the os module. (taken from the
Python manuals.)

This may be easier than getting your head around threads.

spawnl( mode, path, ...) 

spawnle( mode, path, ..., env) 

spawnlp( mode, file, ...) 

spawnlpe( mode, file, ..., env) 

spawnv( mode, path, args) 

spawnve( mode, path, args, env) 

spawnvp( mode, file, args) 

spawnvpe( mode, file, args, env) 

Execute the program path in a new process. If mode is P_NOWAIT, this
function returns the process ID of the new process; if mode is P_WAIT,
returns the process's exit code if it exits normally, or -signal, where
signal is the signal that killed the process. On Windows, the process ID
will actually be the process handle, so can be used with the waitpid()


As an example, the following calls to spawnlp() and spawnvpe() are

import os
os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')

L = ['cp', 'index.html', '/dev/null']
os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)

Availability: Unix, Windows. spawnlp(), spawnlpe(), spawnvp() and
spawnvpe() are not available on Windows. New in version 1.6. 

> -----Original Message-----
> From: nephish [mailto:nephish at xit.net] 
> Sent: 22 August 2005 1:23 
> To: Kent Johnson
> Cc: tutor at python.org
> Subject: Re: [Tutor] how to make a script do two things at once.
> Kent Johnson wrote:
> >nephish wrote:
> >  
> >
> >>Hey there,
> >>i have a simple question about getting a script to do
> >>two things at once.
> >>like this.
> >>
> >>
> >>for i in range(100):
> >>    print i
> >>    time.sleep(.2)
> >>    if i == 15:
> >>        os.system('python /home/me/ipupdate.py')
> >>       
> >>print 'done'
> >>
> >>when i run this, it stops at 15 and runs the script called 
> out in the
> >>os.system line. i know it is supposed to do that. But, how 
> could i get a 
> >>script to do this without stopping the count (or delaying 
> it unill the 
> >>script called exits) 
> >>    
> >>
> >
> >One way to get a script to do two things 'at once' is to use 
> threads. 
> >Threads are also a good way to introduce strange bugs into 
> your program 
> >so you should do some reading about them. I can't find a good 
> >introduction - anyone else have a suggestion? Here is a brief one: 
> >http://www.wellho.net/solutions/python-python-threads-a-first
>Here are a couple of articles, not really introductory: 
>Anyway here is something to get you started, this version of your 
>program starts a new thread to do the os.system call, that way the main

>thread doesn't block.
>import os, threading, time
>def doSomething():
>    ''' This function will be called from the second thread '''
>    os.system('''python -c "from time import sleep;sleep(2);print 
>for i in range(30):
>    print i
>    time.sleep(.2)
>    if i == 10:
>        print 'Starting thread'
>        threading.Thread(target=doSomething).start()
>print 'done'
>Tutor maillist  -  Tutor at python.org 
thanks for all of the responses, yep, looks like threads is what i want 
to go with. got the docs you guys linked me to bookmarked. this is going

to take a bit of research.
thanks again for showing me where to start.
Tutor maillist  -  Tutor at python.org

More information about the Tutor mailing list