Thanks, but does it work for you? The queuing is a good idea and i will implement it at some stage, but i don't think that's my problem at the moment. Essentially, I think i'm doing the same thing as you suggested except for the fact that even when I run a completely stripped down version of the script, i.e each thread does no data proccessing whatsoever, just prints to the screen i get the same result. Furthermore, if I change it so that each thread detaches itself instead of joining itself, I get a funny phenomenon where after around 1500 threads are launched the script dies printing "Killed" to the screen :-/