python在每个独立的进程中运行一个函数,python进程,#!/usr/bin/e


#!/usr/bin/env pythonfrom __future__ import with_statementimport os, cPickledef run_in_separate_process(func, *args, **kwds):    pread, pwrite = os.pipe()    pid = os.fork()    if pid > 0:        os.close(pwrite)        with os.fdopen(pread, 'rb') as f:            status, result = cPickle.load(f)        os.waitpid(pid, 0)        if status == 0:            return result        else:            raise result    else:         os.close(pread)        try:            result = func(*args, **kwds)            status = 0        except Exception, exc:            result = exc            status = 1        with os.fdopen(pwrite, 'wb') as f:            try:                cPickle.dump((status,result), f, cPickle.HIGHEST_PROTOCOL)            except cPickle.PicklingError, exc:                cPickle.dump((2,exc), f, cPickle.HIGHEST_PROTOCOL)        os._exit(0)#an example of usedef treble(x):    return 3 * xdef main():    #calling directly    print treble(4)    #calling in separate process    print run_in_separate_process(treble, 4)

评论关闭