Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #53111
| Newsgroups | comp.lang.python |
|---|---|
| Date | 2013-08-27 23:23 -0700 |
| References | <ff1a229a-affa-4d6f-aeab-55762c48a160@googlegroups.com> <mailman.281.1377634802.19984.python-list@python.org> <3fff4758-65af-47ae-ab8f-d591679809b7@googlegroups.com> <mailman.286.1377642783.19984.python-list@python.org> |
| Message-ID | <b0c108d9-e75a-44d8-85bd-eed4d0adcc76@googlegroups.com> (permalink) |
| Subject | Re: Improving the web page download code. |
| From | mukesh tiwari <mukeshtiwari.iiitm@gmail.com> |
On Wednesday, 28 August 2013 04:03:15 UTC+5:30, MRAB wrote:
> On 27/08/2013 21:53, mukesh tiwari wrote:
>
> > On Wednesday, 28 August 2013 01:49:59 UTC+5:30, MRAB wrote:
>
> >> On 27/08/2013 20:41, mukesh tiwari wrote:
>
> >>
>
> [snip]
>
> >> > if __name__== '__main__':
>
> >> > u = Downloader()
>
> >> > signal.signal( signal.SIGINT , u.handleexception)
>
> >> > thread.start_new_thread ( u.createurl , () )
>
> >> > for i in xrange ( 5 ) :
>
> >> > thread.start_new_thread ( u.downloadurl , () )
>
> >> > while True : pass
>
> >> >
>
> >> >
>
> >> My preferred method when working with background threads is to put a
>
> >> sentinel such as None at the end and then when a worker gets an item
>
> >> from the queue and sees that it's the sentinel, it puts it back in
>
> >> the queue for the other workers to see, and then returns
>
> >> (terminates). The main thread can then call each worker thread's
>
> >> .join method to wait for it to finish. You currently have the main
>
> >> thread running in a 'busy loop', consuming processing time doing
>
> >> nothing!
>
> >
>
> > Hi MRAB,
>
> > Thank you for the reply. I wrote this while loop only because of
>
> > there is no thread.join in thread[1] library but I got your point. I
>
> > am simply running a while loop for doing nothing. So if somehow I can
>
> > block the main without too much computation then it will great.
>
> >
>
> Why don't you use the 'threading' module instead?
>
>
>
>
>
> creator = threading.Thread(target=u.createurl)
>
>
>
> workers = []
>
> for i in xrange(5):
>
> workers.append(threading.Thread(target=u.downloadurl))
>
>
>
> creator.start()
>
>
>
> for w in workers:
>
> w.start()
>
>
>
> creator.join()
>
>
>
> for w in workers:
>
> w.join()
Hi MRAB,
Initially I blocked the main using raw_input('') and it was working fine.
u = Downloader()
signal.signal( signal.SIGINT , u.handleexception)
thread.start_new_thread ( u.createurl , () )
for i in xrange ( 5 ) :
thread.start_new_thread ( u.downloadurl , () )
#This is for blocking main
raw_input('')
When I pressed ctrl-c then it's responding fine but now after switching to threading module, I am not able to kill my program using SIGINT ( ctrl-c ). Any idea how to signal SIGINT to threads ?
Now the changed code and I have to catch the SIGINT.
u = Downloader()
signal.signal( signal.SIGINT , u.handleexception)
urlcreator = threading.Thread ( target = u.createurl )
workers = []
for i in xrange ( 5 ):
workers.append ( threading.Thread( target = u.downloadurl ) )
urlcreator.start()
for w in workers:
w.start()
urlcreator.join()
for w in workers:
w.join()
-Mukesh Tiwari
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Improving the web page download code. mukesh tiwari <mukeshtiwari.iiitm@gmail.com> - 2013-08-27 12:41 -0700
Re: Improving the web page download code. MRAB <python@mrabarnett.plus.com> - 2013-08-27 21:19 +0100
Re: Improving the web page download code. mukesh tiwari <mukeshtiwari.iiitm@gmail.com> - 2013-08-27 13:53 -0700
Re: Improving the web page download code. MRAB <python@mrabarnett.plus.com> - 2013-08-27 23:33 +0100
Re: Improving the web page download code. mukesh tiwari <mukeshtiwari.iiitm@gmail.com> - 2013-08-27 23:23 -0700
Re: Improving the web page download code. MRAB <python@mrabarnett.plus.com> - 2013-08-28 16:12 +0100
Re: Improving the web page download code. Alister <alister.ware@ntlworld.com> - 2013-08-28 08:58 +0000
csiph-web