python实现在每个独立进程中运行一个函数的方法

1270次阅读  |  发布于5年以前

本文实例讲述了python实现在每个独立进程中运行一个函数的方法。分享给大家供大家参考。具体分析如下:

这个简单的函数可以同于在单独的进程中运行另外一个函数,这对于释放内存资源非常有用


    #!/usr/bin/env python
    from __future__ import with_statement
    import os, cPickle
    def 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 use
    def treble(x):
      return 3 * x
    def main():
      #calling directly
      print treble(4)
      #calling in separate process
      print run_in_separate_process(treble, 4)

希望本文所述对大家的Python程序设计有所帮助。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8