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 相关文章推荐
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
Jan 22 Python
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
Jun 03 Python
Python实现简单的四则运算计算器
Nov 02 Python
Python 对象中的数据类型
May 13 Python
python使用邻接矩阵构造图代码示例
Nov 10 Python
python抓取网页中链接的静态图片
Jan 29 Python
python简单操作excle的方法
Sep 12 Python
python 2.7.13 安装配置方法图文教程
Sep 18 Python
Python中BeautifuSoup库的用法使用详解
Nov 15 Python
keras中模型训练class_weight,sample_weight区别说明
May 23 Python
python识别验证码的思路及解决方案
Sep 13 Python
python实现文件分片上传的接口自动化
Nov 19 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
常用星际术语索引(新手指南)
2020/03/04 星际争霸
json的键名为数字时的调用方式(示例代码)
2013/11/15 PHP
php采用file_get_contents代替使用curl实例
2014/11/07 PHP
php使用iconv中文截断问题的解决方法
2015/02/11 PHP
phpstudy默认不支持64位php的解决方法
2017/02/20 PHP
关于PHP通用返回值设置方法
2017/03/31 PHP
详谈php中 strtr 和 str_replace 的效率问题
2017/05/14 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
jQuery 类twitter的文本字数限制带提示效果插件
2010/04/16 Javascript
兼容IE与firefox火狐的回车事件(js与jquery)
2010/10/20 Javascript
jquery isType() 类型判断代码
2011/02/14 Javascript
构造函数+原型模式构造js自定义对象(最通用)
2014/05/12 Javascript
javascript将异步校验表单改写为同步表单
2015/01/27 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
使用Chart.js图表库制作漂亮的响应式表单
2015/10/28 Javascript
JavaScript字符串删除重复字符的方法
2015/12/25 Javascript
JavaScript引用类型和基本类型详解
2016/01/06 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
2016/05/31 Javascript
关于Javascript中document.cookie的使用
2017/03/08 Javascript
pycharm 使用心得(一)安装和首次使用
2014/06/05 Python
Django框架中处理URLconf中特定的URL的方法
2015/07/20 Python
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
Python3.5.3下配置opencv3.2.0的操作方法
2018/04/02 Python
Django 根据数据模型models创建数据表的实例
2018/05/27 Python
Python中os模块功能与用法详解
2020/02/26 Python
Python super()方法原理详解
2020/03/31 Python
Keds加拿大官网:购买帆布运动鞋和皮鞋
2019/09/26 全球购物
《湘夫人》教学反思
2014/02/21 职场文书
汽车技术服务与贸易专业求职信
2014/07/20 职场文书
党员先进性教育整改措施
2014/09/18 职场文书
离婚协议书标准格式
2014/10/04 职场文书
2016年班主任新年寄语
2015/08/18 职场文书
2019森林防火宣传标语大全!
2019/07/03 职场文书
MySQL数据库中varchar类型的数字比较大小的方法
2021/11/17 MySQL
Apache Hudi集成Spark SQL操作hide表
2022/03/31 Servers
python+opencv实现目标跟踪过程
2022/06/21 Python