In terms of multithreading, an I/O intensive app that is threaded can make use of dual procs. Otherwise threaded apps can't for technical reasons (GIL and such but don't need to get into those details).