Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #83746
| References | <CAEMktPUaiQrEEhvK4okxfBzAynqZDM8c=a93dAo3cfJX1VcWRw@mail.gmail.com> <54B6479B.6080607@davea.name> |
|---|---|
| Date | 2015-01-14 17:41 +0530 |
| Subject | Re: Threading in Python, Please check the script |
| From | Robert Clove <cloverobert@gmail.com> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.17714.1421237503.18130.python-list@python.org> (permalink) |
[Multipart message — attachments visible in raw view] - view raw
Can u provide me the pseudo script. On Wed, Jan 14, 2015 at 4:10 PM, Dave Angel <davea@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 >
Back to comp.lang.python | Previous | Next | Find similar | Unroll thread
Re: Threading in Python, Please check the script Robert Clove <cloverobert@gmail.com> - 2015-01-14 17:41 +0530
csiph-web