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使用multiprocessing实现一个最简单的分布式作业调度系统
Mar 14 Python
Python中使用插入排序算法的简单分析与代码示例
May 04 Python
Python Socket编程详细介绍
Mar 23 Python
浅谈python连续赋值可能引发的错误
Nov 10 Python
python使用zip将list转为json的方法
Dec 31 Python
Python中使用遍历在列表中添加字典遇到的坑
Feb 27 Python
python连接PostgreSQL数据库的过程详解
Sep 18 Python
python set集合使用方法解析
Nov 05 Python
python图形界面开发之wxPython树控件使用方法详解
Feb 24 Python
python 获取当前目录下的文件目录和文件名实例代码详解
Mar 10 Python
django API 中接口的互相调用实例
Apr 01 Python
详解python tkinter包获取本地绝对路径(以获取图片并展示)
Sep 04 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
第1次亲密接触PHP5(1)
2006/10/09 PHP
PHP 模拟$_PUT实现代码
2010/03/15 PHP
PHP如何利用P3P实现跨域
2013/08/24 PHP
php模仿asp Application对象在线人数统计实现方法
2015/01/04 PHP
解决nginx不支持thinkphp中pathinfo的问题
2015/07/21 PHP
javascript实现的鼠标链接提示效果生成器代码
2007/06/28 Javascript
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
深入理解javascript中defer的作用
2013/12/11 Javascript
js日期联动示例
2014/05/02 Javascript
基于jQuery实现音乐播放试听列表
2016/04/14 Javascript
ReactNative-JS 调用原生方法实例代码
2016/10/08 Javascript
JS简单获取当前日期和农历日期的方法
2017/04/17 Javascript
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
2017/08/21 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
浅谈vue-router 路由传参的方法
2017/12/27 Javascript
node.js域名解析实现方法详解
2019/11/05 Javascript
JavaScript Image对象实现原理实例解析
2020/08/26 Javascript
详解ES6实现类的私有变量的几种写法
2021/02/10 Javascript
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
2014/06/10 Python
更改Ubuntu默认python版本的两种方法python-> Anaconda
2016/12/18 Python
python使用Matplotlib画饼图
2018/09/25 Python
python树的同构学习笔记
2019/09/14 Python
python实现通过队列完成进程间的多任务功能示例
2019/10/28 Python
对tensorflow中cifar-10文档的Read操作详解
2020/02/10 Python
Keras 使用 Lambda层详解
2020/06/10 Python
Python使用pycharm导入pymysql教程
2020/09/16 Python
python list等分并从等分的子集中随机选取一个数
2020/11/16 Python
N.Peal官网:来自伦敦的高档羊绒品牌
2018/10/29 全球购物
法学毕业生自我鉴定
2014/01/31 职场文书
毕业生求职信范文
2014/06/29 职场文书
2014年小学教师工作总结
2014/11/10 职场文书
文体活动总结
2015/02/04 职场文书
初中家长意见
2015/06/03 职场文书
CSS3 制作精美的定价表
2021/04/06 HTML / CSS
mybatis中注解与xml配置的对应关系和对比分析
2021/08/04 Java/Android
Prometheus 监控MySQL使用grafana展示
2021/08/30 MySQL