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


Posted in Python onApril 23, 2015

本文实例讲述了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 相关文章推荐
Python多线程、异步+多进程爬虫实现代码
Feb 17 Python
Python网络爬虫神器PyQuery的基本使用教程
Feb 03 Python
基于Python Numpy的数组array和矩阵matrix详解
Apr 04 Python
Python对数据进行插值和下采样的方法
Jul 03 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
Jul 06 Python
Pytorch的mean和std调查实例
Jan 02 Python
Python类和实例的属性机制原理详解
Mar 21 Python
浅谈matplotlib 绘制梯度下降求解过程
Jul 12 Python
Python创建简单的神经网络实例讲解
Jan 04 Python
python实现计算图形面积
Feb 22 Python
python 提取html文本的方法
May 20 Python
Python matplotlib绘制条形统计图 处理多个实验多组观测值
Apr 21 Python
python输出指定月份日历的方法
Apr 23 #Python
python打开文件并获取文件相关属性的方法
Apr 23 #Python
Python实现计算文件夹下.h和.cpp文件的总行数
Apr 23 #Python
Python实现把回车符\r\n转换成\n
Apr 23 #Python
Python实现对比不同字体中的同一字符的显示效果
Apr 23 #Python
Python3里的super()和__class__使用介绍
Apr 23 #Python
Python实现的飞速中文网小说下载脚本
Apr 23 #Python
You might like
PHP实现MVC开发得最简单的方法――模型
2007/04/10 PHP
优化使用mysql存储session的php代码
2008/01/10 PHP
计算php页面运行时间的函数介绍
2013/07/01 PHP
php url路由入门实例
2014/04/23 PHP
PHP字符串word末字符实现大小写互换的方法
2014/11/10 PHP
PHP中Closure类的使用方法及详解
2015/10/09 PHP
php实现简单爬虫的开发
2016/03/28 PHP
详解Yii2 rules 的验证规则
2016/12/02 PHP
PHP 中使用ajax时一些常见错误总结整理
2017/02/27 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
关于document.cookie的使用javascript
2008/04/11 Javascript
js url传值中文乱码之解决之道
2009/11/20 Javascript
javascript object array方法使用详解
2012/12/03 Javascript
js中的eventType事件及其浏览器支持性介绍
2013/11/29 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
详解JavaScript异步编程中jQuery的promise对象的作用
2016/05/03 Javascript
js的OOP继承实现(必看篇)
2017/02/18 Javascript
jQuery返回定位插件详解
2017/05/15 jQuery
javascript按顺序加载运行js方法
2017/12/01 Javascript
JavaScript面向对象继承原理与实现方法分析
2018/08/09 Javascript
在element-ui的select下拉框加上滚动加载
2019/04/18 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
[原创]Python入门教程4. 元组基本操作
2018/10/31 Python
将python图片转为二进制文本的实例
2019/01/24 Python
Django模板Templates使用方法详解
2019/07/19 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
python文件读写代码实例
2019/10/21 Python
详解anaconda安装步骤
2020/11/23 Python
Ootori在线按摩椅店:一家专业的按摩椅制造商
2019/04/10 全球购物
某公司.Net方向面试题
2014/04/24 面试题
服务生自我鉴定
2014/01/22 职场文书
8和9的加减法教学反思
2014/05/01 职场文书
房屋租房协议书范本
2014/12/04 职场文书
2015年行政工作总结范文
2015/04/09 职场文书
2015年世界急救日宣传活动方案
2015/05/06 职场文书
Java内存模型之happens-before概念详解
2021/06/13 Java/Android