import os import subprocess import time import thread import threading def spawn_workers(workers_count): class WorkerFn(object): def __call__(self): file_name = str(thread.get_ident()) + '.log' print 'Logging to %s\n' % file_name command = ['ping', '-n', '1', '127.0.0.1'] with open(file_name, 'w') as file_obj: task = subprocess.Popen(command, stdout=file_obj, stderr=file_obj) task.wait() print 'Removing %s\n' % file_name os.remove(file_name) def start_daemon(func): t = threading.Thread(target=func) t.start() return t workers = [] worker_fn = WorkerFn() try: workers = [start_daemon(worker_fn) for _ in range(workers_count)] finally: for worker in workers: worker.join() if __name__ == '__main__': spawn_workers(4)