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

本文实例讲述了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程序设计有所帮助。

以上是 python实现在每个独立进程中运行一个函数的方法 的全部内容, 来源链接: utcz.com/z/325873.html

回到顶部