Приведенные выше ответы являются вполне разумными способами приблизиться к вещам со стороны Python, например,
from multiprocessing import Pool
import os
def processFile(x):
return os.system('ls '+x)
if __name__ == '__main__':
pool = Pool(processes=2)
files=['foo','foo.py','foo.cpp','foo.txt','foo.bar']
result = pool.map(processFile, files)
print 'Results are', result
Но если вы все равно используете оболочку, вы можете рассмотреть возможность использования Gnu Parallel на стороне оболочки, которая работает как xargs, но выполняет отдельные задачи параллельно, с возможностью управления количеством задания могут выполняться одновременно и т. д.