Thread Question

Duncan Booth duncan.booth at invalid.invalid
Thu Jul 27 11:20:25 EDT 2006


Ritesh Raj Sarraf wrote:

> Duncan,
> 
> I couldn't make out much from the code.
> Instead this is what I did.
> 
> threads = []
>         nloops = range(len(lRawData))
>         for i in nloops:
>             (sUrl, sFile, download_size, checksum) =
> stripper(lRawData[i])
>             t = threading.Thread(target=download_from_web, args=(sUrl,
> sFile, sSourceDir, None))
>             # = pypt_thread(download_from_web, i,
> stripper(lRawData[i]))
>             threads.append(t)
> 
>         i = 0
>         join_i = 0
>         while i < nloops:
>             counter = 0
>             while counter < 3:
>                 threads[i].start()
>                 counter += 1
>                 i += 1
>             counter = 0
>             join_i = i - 3
>             while counter < 3:
>                 threads[join_i].join()
>                 counter += 1
>                 join_i += 1
> 
> Is this correct ? Comments!!
> 
This is bad because you start one thread for each URL then let them run in 
batches of 3. So you get all the overhead of creating lots of threads and 
very little of the benefit. Much better just to create 3 threads and let 
each one handle as many of the requests as it can.



More information about the Python-list mailing list