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 相关文章推荐
用PyQt进行Python图形界面的程序的开发的入门指引
Apr 14 Python
Python的Django框架中从url中捕捉文本的方法
Jul 20 Python
Python决策树分类算法学习
Dec 22 Python
Python实现备份MySQL数据库的方法示例
Jan 11 Python
java中的控制结构(if,循环)详解
Jun 26 Python
python3.x提取中文的正则表达式示例代码
Jul 23 Python
在django admin中添加自定义视图的例子
Jul 26 Python
python 追踪except信息方式
Apr 25 Python
python requests包的request()函数中的参数-params和data的区别介绍
May 05 Python
python中的垃圾回收(GC)机制
Sep 21 Python
字典算法实现及操作 --python(实用)
Mar 31 Python
基于Python实现一个春节倒计时脚本
Jan 22 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
smtp邮件发送一例
2006/10/09 PHP
GBK的页面输出JSON格式的php函数
2010/02/16 PHP
PHP中10个不常见却非常有用的函数
2010/03/21 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
javascript 播放器 控制
2007/01/22 Javascript
asp.net+jquery滚动滚动条加载数据的下拉控件
2010/06/25 Javascript
网页中返回顶部代码(多种方法)另附注释说明
2013/04/24 Javascript
jQuery菜单插件superfish使用指南
2015/04/21 Javascript
Node.js中的process.nextTick使用实例
2015/06/25 Javascript
jQuery绑定自定义事件的魔法升级版
2016/06/30 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
微信小程序侧边栏滑动特效(左右滑动)
2017/01/23 Javascript
深入研究React中setState源码
2017/11/17 Javascript
vue.js数据绑定操作详解
2018/04/23 Javascript
JS获取并处理php数组的方法实例分析
2018/09/04 Javascript
js使用cookie实现记住用户名功能示例
2019/06/13 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
2019/07/25 Javascript
微信小程序new Date()方法失效问题解决方法
2019/07/29 Javascript
python 获取et和excel的版本号
2009/04/09 Python
python多线程threading.Lock锁用法实例
2014/11/01 Python
python 简单的多线程链接实现代码
2016/08/28 Python
python构建自定义回调函数详解
2017/06/20 Python
使用Python控制摄像头拍照并发邮件
2019/04/23 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
2019/12/18 Python
中国宠物用品商城:E宠商城
2016/08/27 全球购物
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2014/01/19 面试题
医学生个人求职信范文
2013/09/24 职场文书
2014离婚协议书范文
2014/09/10 职场文书
个人师德师风自我剖析材料
2014/09/29 职场文书
安全检查汇报材料
2014/12/26 职场文书
爱心捐助活动总结
2015/05/09 职场文书
导游词之澳门妈祖庙
2019/12/19 职场文书
写好Python代码的几条重要技巧
2021/05/21 Python
PHP实现两种排课方式
2021/06/26 PHP
详解Vue router路由
2021/11/20 Vue.js
Redis Lua脚本实现ip限流示例
2022/07/15 Redis