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最基本的数据类型以及对元组的介绍
Apr 14 Python
Python常用的爬虫技巧总结
Mar 28 Python
Python松散正则表达式用法分析
Apr 29 Python
python中利用Future对象回调别的函数示例代码
Sep 07 Python
浅析Python数据处理
May 02 Python
浅析python3中的os.path.dirname(__file__)的使用
Aug 30 Python
Python设计模式之迭代器模式原理与用法实例分析
Jan 10 Python
python Pandas库基础分析之时间序列的处理详解
Jul 13 Python
python垃圾回收机制(GC)原理解析
Dec 30 Python
Python接口开发实现步骤详解
Apr 26 Python
基于Python爬取fofa网页端数据过程解析
Jul 13 Python
解决pytorch 数据类型报错的问题
Mar 03 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生成SessionID和图片校验码的思路和实现代码
2009/03/10 PHP
php将session放入memcached的设置方法
2014/02/14 PHP
php实现通过cookie换肤的方法
2015/07/13 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
PHP基于curl模拟post提交json数据示例
2018/06/22 PHP
PHP过滤器 filter_has_var() 函数用法实例分析
2020/04/23 PHP
JavaScript 10件让人费解的事情
2010/02/15 Javascript
JS 实现获取打开一个界面中输入的值
2013/03/19 Javascript
javascript 判断整数方法分享
2014/12/16 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
jQuery实现鼠标划过修改样式的方法
2015/04/14 Javascript
Bootstrap使用基础教程详解
2016/09/05 Javascript
JavaScript中Array的实用操作技巧分享
2016/09/11 Javascript
JavaScript简单下拉菜单特效
2016/09/13 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
JS实现带导航城市列表以及输入搜索功能
2018/01/04 Javascript
webpack4.x开发环境配置详解
2018/08/04 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
用vue设计一个日历表
2020/12/03 Vue.js
[01:05:40]VG vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python实现简单购物商城
2016/05/21 Python
Python时间的精准正则匹配方法分析
2017/08/17 Python
机器学习之KNN算法原理及Python实现方法详解
2018/07/09 Python
PyQt打开保存对话框的方法和使用详解
2019/02/27 Python
python 中Arduino串口传输数据到电脑并保存至excel表格
2019/10/14 Python
python实现批量转换图片为黑白
2020/06/16 Python
戴森美国官网:Dyson美国
2016/09/11 全球购物
美国指甲油品牌:Deco Miami
2017/01/30 全球购物
北美最大的零售退货翻新商:VIP Outlet
2019/11/21 全球购物
EJB发布WEB服务一般步骤
2012/10/31 面试题
英语系毕业生自荐信
2013/10/31 职场文书
区级文明单位申报材料
2014/05/15 职场文书
教师党员自我评议不足范文
2014/10/19 职场文书
党的群众路线教育实践活动个人整改措施落实情况
2014/11/04 职场文书
乡镇干部学习心得体会
2016/01/23 职场文书