Gurpreet Sachdeva wrote: > Also the difference of time is not much... > How do we best optimize our task by using threads... please help... >
For most tasks splitting the processing into separate threads will result in an increase in the total time to complete the task. The only times when it may result in a decrease in the running time are when the time the task takes does not entirely depend on the time taken by the CPU, or when multiple CPU's are involved. Unfortunately the latter case isn't handled well by Python, so don't expect multiple CPU's to help speed up a multi-threaded Python program by very much. That leaves the former case: if your task has to stop and wait for something else to happen (e.g. data to be read from a network, or to be read from a disc file), then splitting it into multiple threads may allow the waits to be overlapped with useful processing which could result in an overall decrease in processing time. A good use of threads is to improve responsiveness of a system. For example if you ensure that GUI processing happens on a separate thread from some CPU intensive computation then you can ensure that the GUI remains responsive while the computation is running. It won't make the computation complete any faster (in fact it will probably be slower), but the user will remain happier. Similarly network applications are usually multi-threaded so that all requests get a fair chance to complete instead of having to wait for the slowest to complete before others can run. If you do have multiple processors available and want to speed up a Python program then you probably have to look at multiple processes rather than multiple threads. Alternatively you could move parts of the processing out of the Python environment by rewriting inner loops in C and releasing the interpreter lock, but that isn't usually the best option. -- http://mail.python.org/mailman/listinfo/python-list