Can u provide me the pseudo script.
On Wed, Jan 14, 2015 at 4:10 PM, Dave Angel <da...@davea.name> wrote: > On 01/14/2015 01:22 AM, Robert Clove wrote: > >> Hi All, >> >> > In any new thread, you should specify what versions of Python and OS > you're using. I'll assume Python 2.7 and Linux for this message. > > I have made a script in which i have started two thread named thread 1 and >> thread 2. >> In thread 1 one function will run named func1 and in thread 2 function 2 >> will run named func 2. >> Thread 1 will execute a command and wait for 60 seconds. >> Thread 2 will run only till thread 1 is running . >> Again after that the same process continues in while after a break of 80 >> Seconds. >> >> I am a beginner in python. >> Please suggest what all i have done wrong and how to correct it. >> >> >> #!/usr/bin/python >> >> import threading >> import time >> import subprocess >> import datetime >> import os >> import thread >> >> thread.start_new_thread( print_time, (None, None)) >> thread.start_new_thread( print_time1, (None, None)) >> > > In these two lines you're referencing a function that hasn't been defined > yet. This top-level code should be moved to the end of the file, after the > if __name__ = "__main__": line > > Or just drop it, since you've got a second set of code also trying to > create new threads. > > command= "strace -o /root/Desktop/a.txt -c ./server" >> final_dir = "/root/Desktop" >> exitflag = 0 >> # Define a function for the thread >> def print_time(*args): >> os.chdir(final_dir) >> print "IN first thread" >> proc = subprocess.Popen(command,shell=True,stdout=subprocess.PIPE, >> stderr=subprocess.PIPE) >> proc.wait(70) >> exitflag=1 >> > > You just set a local variable, not the global one. So it won't be visible > in the other thread. If you must rebind a top-level variable from a > function, you need to use the 'global' declaration in your function. > > > >> def print_time1(*args): >> print "In second thread" >> global exitflag >> while exitflag: >> thread.exit() >> #proc = >> subprocess.Popen(command1,shell=True,stdout=subprocess.PIPE, >> sterr=subprocess.PIPE) >> >> >> >> # Create two threads as follows >> try: >> while (1): >> t1=threading.Thread(target=print_time) >> t1.start() >> t2=threading.Thread(target=print_time1) >> t2=start() >> time.sleep(80) >> z = t1.isAlive() >> z1 = t2.isAlive() >> if z: >> z.exit() >> if z1: >> z1.exit() >> threading.Thread(target=print_time1).start() >> threading.Thread(target=print_time1).start() >> > > What are you trying to do in those two lines? If nothing else, they'll > give an indentation error. But if you fix that, you'll still have the > potential problem of creating more and more threads as you loop around. > > print "In try" >> except: >> > > Bare excepts are "evil." Your user can't tell what went wrong, from a > syntax error to the user hitting control-C. Even if you can't handle a > particular kind of exception, at least have the courtesy of telling the > user what went wrong. > > print "Error: unable to start thread" >> >> >> >> > I'm sure there are other things, but these popped out at me. > > -- > DaveA > -- > https://mail.python.org/mailman/listinfo/python-list >
-- https://mail.python.org/mailman/listinfo/python-list