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 CGI脚本的教程
Jun 29 Python
简单实现Python爬取网络图片
Apr 01 Python
DataFrame 将某列数据转为数组的方法
Apr 13 Python
python删除文本中行数标签的方法
May 31 Python
python列表使用实现名字管理系统
Jan 30 Python
Django实现单用户登录的方法示例
Mar 28 Python
python移位运算的实现
Jul 15 Python
python字符串切割:str.split()与re.split()的对比分析
Jul 16 Python
python 公共方法汇总解析
Sep 16 Python
python3 pillow模块实现简单验证码
Oct 31 Python
Python使用tkinter制作在线翻译软件
Feb 22 Python
python编程学习使用管道Pipe编写优化代码
Nov 20 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编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
2010/11/01 PHP
php上传图片客户端和服务器端实现方法
2015/03/30 PHP
PHP获取数组最大值下标的方法
2015/05/12 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
JQuery中的ready函数冲突的解决方法
2010/05/17 Javascript
Javascript Ajax异步读取RSS文档具体实现
2013/12/12 Javascript
通过JS来判断页面控件是否获取焦点
2014/01/03 Javascript
js 获取、清空input type="file"的值示例代码
2014/02/19 Javascript
推荐一款jQuery插件模板
2015/01/09 Javascript
Jquery的基本对象转换和文档加载用法实例
2015/02/25 Javascript
深入理解JavaScript系列(41):设计模式之模板方法详解
2015/03/04 Javascript
原生js代码实现图片放大境效果
2016/10/30 Javascript
Javascript的this用法
2017/01/16 Javascript
Vue.js 2.0 移动端拍照压缩图片上传预览功能
2017/03/06 Javascript
vue项目中使用Hbuilder打包app 设置沉浸式状态栏的方法
2018/10/22 Javascript
vue中利用Promise封装jsonp并调取数据
2019/06/18 Javascript
vue 兄弟组件的信息传递的方法实例详解
2019/08/30 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
通过python+selenium3实现浏览器刷简书文章阅读量
2017/12/26 Python
分析Python读取文件时的路径问题
2018/02/11 Python
基于python的多进程共享变量正确打开方式
2018/04/28 Python
python代码如何实现余弦相似性计算
2020/02/09 Python
详解pandas.DataFrame.plot() 画图函数
2020/06/14 Python
AmazeUI 网格的实现示例
2020/08/13 HTML / CSS
凯特方迪化妆品官网:Kat Von D Beauty
2016/11/15 全球购物
机关干部四风问题自我剖析及整改措施
2014/10/26 职场文书
八月一日观后感
2015/06/10 职场文书
回门宴新娘答谢词
2015/09/29 职场文书
演讲稿之开卷有益
2019/08/07 职场文书
多属性、多分类MySQL模式设计
2021/04/05 MySQL
Java基础-封装和继承
2021/07/02 Java/Android
MySQL 1130异常,无法远程登录解决方案详解
2021/08/23 MySQL
MySQL创建定时任务
2022/01/22 MySQL
Pandas实现DataFrame的简单运算、统计与排序
2022/03/31 Python
iSCSI服务器CHAP双向认证配置
2022/04/01 Servers
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript