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判断图片宽度和高度后删除图片的方法
May 22 Python
python查看zip包中文件及大小的方法
Jul 09 Python
深入解析Python中的lambda表达式的用法
Aug 28 Python
Python实现GUI学生信息管理系统
Apr 05 Python
Selenium控制浏览器常见操作示例
Aug 13 Python
python中字符串内置函数的用法总结
Sep 13 Python
python 多线程将大文件分开下载后在合并的实例
Nov 09 Python
python画图把时间作为横坐标的方法
Jul 07 Python
基于TensorFlow中自定义梯度的2种方式
Feb 04 Python
Python3实现建造者模式的示例代码
Jun 28 Python
PyTorch安装与基本使用详解
Aug 31 Python
Python+Tkinter打造签名设计工具
Apr 01 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中OR与|| AND与&&的区别总结
2013/10/26 PHP
php分页代码学习示例分享
2014/02/20 PHP
Yii2.0实现的批量更新及批量插入功能示例
2019/01/29 PHP
thinkphp5框架实现的自定义扩展类操作示例
2019/05/16 PHP
JS无限极树形菜单,json格式、数组格式通用示例
2013/07/30 Javascript
jQuery阻止事件冒泡具体实现
2013/10/11 Javascript
jquery自动切换tabs选项卡的具体实现
2013/12/24 Javascript
jQuery实现设置、移除文本框默认值功能
2015/01/13 Javascript
jQuery中事件与动画的总结分享
2016/05/24 Javascript
利用Javascript仿Excel的数据透视分析功能
2016/09/07 Javascript
JS代码实现百度地图 画圆 删除标注
2016/10/12 Javascript
Bootstrap多级菜单的实现代码
2017/05/23 Javascript
详解vue 组件之间使用eventbus传值
2017/10/25 Javascript
layer弹出层全屏及关闭方法
2018/08/17 Javascript
浅析Vue.js 中的条件渲染指令
2018/11/19 Javascript
Vue实现table上下移动功能示例
2019/02/21 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
2019/11/23 Javascript
jQuery 动画与停止动画效果实例详解
2020/05/19 jQuery
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
[54:27]TNC vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
以911新闻为例演示Python实现数据可视化的教程
2015/04/23 Python
Python实现的排列组合计算操作示例
2017/10/13 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
浅谈Django中view对数据库的调用方法
2019/07/18 Python
Django values()和value_list()的使用
2020/03/31 Python
美国Lolё官网:购买大胆而美丽的女性运动服装
2017/05/22 全球购物
模具设计与制造专业推荐信
2014/02/16 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
部门经理迟到检讨书
2015/02/16 职场文书
农村环境卫生倡议书
2015/04/29 职场文书
联村联户简报
2015/07/21 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
Win11 Dev 预览版25174.1000发布 (附更新修复内容汇总)
2022/08/05 数码科技