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

yipeiwu_com6年前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实现rsa加密实例详解

python实现rsa加密实例详解 一 代码 import rsa key = rsa.newkeys(3000)#生成随机秘钥 privateKey = key[1]#私钥 pu...

Python实现优先级队列结构的方法详解

最简单的实现 一个队列至少满足2个方法,put和get. 借助最小堆来实现. 这里按"值越大优先级越高"的顺序. #coding=utf-8 from heapq import h...

菜鸟使用python实现正则检测密码合法性

客户系统升级,要求用户密码符合一定的规则,即:包含大小写字母、数字、符号,长度不小于8,于是先用python写了个简单的测试程序: 在写解决方案前,列一下 python正则表达式中的特殊...

django中上传图片分页三级联动效果的实现代码

django中上传图片分页三级联动效果的实现代码

Django1.8.2中文文档:Django1.8.2中文文档 上传图片配置上传文件保存目录 1)新建上传文件保存目录。 2)配置上传文件保存目录。 后台管理页面上传图片 1)设计...

python关闭windows进程的方法

本文实例讲述了python关闭windows进程的方法。分享给大家供大家参考。具体如下: 下面的python代码根据进程的名字调用windows的taskkill命令关闭指定的进程...