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

nephish nephish at xit.net
Mon Aug 22 05:23:01 CEST 2005


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-example.html
>
>Here are a couple of articles, not really introductory:
>http://linuxgazette.net/107/pai.html
>http://www.devshed.com/c/a/Python/Basic-Threading-in-Python/
>
>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 'hello'"''')
>    
>for i in range(30):
>    print i
>    time.sleep(.2)
>    if i == 10:
>        print 'Starting thread'
>        threading.Thread(target=doSomething).start()
>       
>print 'done'
>
>Kent
>
>_______________________________________________
>Tutor maillist  -  Tutor at python.org
>http://mail.python.org/mailman/listinfo/tutor
>
>  
>
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.
shawn


More information about the Tutor mailing list