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写的windows服务不能启动的问题
Apr 15 Python
python的类变量和成员变量用法实例教程
Aug 25 Python
python进程类subprocess的一些操作方法例子
Nov 22 Python
Python标准库之循环器(itertools)介绍
Nov 25 Python
简单介绍Python2.x版本中的cmp()方法的使用
May 20 Python
浅谈Python的文件类型
May 30 Python
python调用API实现智能回复机器人
Apr 10 Python
python基于itchat模块实现微信防撤回
Apr 29 Python
Python模块future用法原理详解
Jan 20 Python
python日期与时间戳的各种转换示例
Feb 12 Python
Python尾递归优化实现代码及原理详解
Oct 09 Python
8g内存用python读取10文件_面试题-python 如何读取一个大于 10G 的txt文件?
May 28 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
PHP5.4中json_encode中文转码的变化小结
2013/01/30 PHP
dedecms集成财付通支付接口
2014/12/28 PHP
yii2使用gridView实现下拉列表筛选数据
2017/04/10 PHP
Javascript 跨域访问解决方案
2009/02/14 Javascript
犀利的js 函数集合
2009/06/11 Javascript
brook javascript框架介绍
2011/10/10 Javascript
JavaScript 基础篇之运算符、语句(二)
2012/04/07 Javascript
node.js解决获取图片真实文件类型的问题
2014/12/20 Javascript
javascript实现汉字转拼音代码分享
2015/04/20 Javascript
基于jQuery实现的旋转彩圈实例
2015/06/26 Javascript
谈一谈jQuery核心架构设计
2016/03/28 Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
2016/12/13 Javascript
vue2.0实现的tab标签切换效果(内容可自定义)示例
2019/02/11 Javascript
vue路由跳转传参数的方法
2019/05/06 Javascript
Node对CommonJS的模块规范
2019/11/06 Javascript
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
2020/08/12 Javascript
Python中用startswith()函数判断字符串开头的教程
2015/04/07 Python
Python爬虫DNS解析缓存方法实例分析
2017/06/02 Python
Python实现对百度云的文件上传(实例讲解)
2017/10/21 Python
解决python "No module named pip" 的问题
2018/10/13 Python
基于python实现百度翻译功能
2019/05/09 Python
Python中的pathlib.Path为什么不继承str详解
2019/06/23 Python
python 浅谈serial与stm32通信的编码问题
2019/12/18 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
python读取配置文件方式(ini、yaml、xml)
2020/04/09 Python
python中append函数用法讲解
2020/12/11 Python
Python 随机按键模拟2小时
2020/12/30 Python
python源文件的字符编码知识点详解
2021/03/04 Python
html5之Canvas路径绘图、坐标变换应用实例
2012/12/26 HTML / CSS
HTML5 Web缓存和运用程序缓存(cookie,session)
2018/01/11 HTML / CSS
大三在校生电子商务求职信
2013/10/29 职场文书
毕业典礼邀请函
2015/01/31 职场文书
工作自我推荐信范文
2015/03/25 职场文书
2016年“我们的节日·端午节”活动总结
2016/04/01 职场文书
Python包argparse模块常用方法
2021/06/04 Python
mysql查询结果实现多列拼接查询
2022/04/03 MySQL