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程序设计有所帮助。

Posted in 未分类

发表评论