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对Csv文件操作实例代码
May 12 Python
Python基础之文件读取的讲解
Feb 16 Python
Django 静态文件配置过程详解
Jul 23 Python
python gdal安装与简单使用
Aug 01 Python
python psutil模块使用方法解析
Aug 01 Python
Centos7 下安装最新的python3.8
Oct 28 Python
python opencv将表格图片按照表格框线分割和识别
Oct 30 Python
python实现飞船游戏的纵向移动
Apr 24 Python
Python学习笔记之装饰器
Aug 06 Python
解决pip安装的第三方包在PyCharm无法导入的问题
Oct 15 Python
Sentry错误日志监控使用方法解析
Nov 12 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
Dec 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
十天学会php之第九天
2006/10/09 PHP
PHP文章按日期(月日)SQL归档语句
2012/11/29 PHP
解析php addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
2018/05/16 PHP
不懂JavaScript应该怎样学
2008/04/16 Javascript
一段利用WSH修改和查看IP配置的代码
2008/05/11 Javascript
浅析js中的浮点型运算问题
2014/01/06 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
初学者AngularJS的环境搭建过程
2017/10/27 Javascript
除Console.log()外更多的Javascript调试命令
2018/01/24 Javascript
JavaScript实现的前端AES加密解密功能【基于CryptoJS】
2018/08/28 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
2018/10/09 Javascript
vue动态绑定class选中当前列表变色的方法示例
2018/12/19 Javascript
vue 实现小程序或商品秒杀倒计时
2019/04/14 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
2019/09/06 Javascript
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
Vue中函数防抖节流的理解及应用实现
2020/04/24 Javascript
python使用clear方法清除字典内全部数据实例
2015/07/11 Python
详解tensorflow训练自己的数据集实现CNN图像分类
2018/02/07 Python
python线程池threadpool实现篇
2018/04/27 Python
python文件写入write()的操作
2019/05/14 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
2019/06/14 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
用Python调用win命令行提高工作效率的实例
2019/08/14 Python
Python的几种主动结束程序方式
2019/11/22 Python
基于python+selenium的二次封装的实现
2020/01/06 Python
Pytorch: 自定义网络层实例
2020/01/07 Python
python 写一个水果忍者游戏
2021/01/13 Python
优秀教师获奖感言
2014/01/31 职场文书
春季运动会广播稿大全
2014/02/19 职场文书
房屋转让协议书范本
2014/04/11 职场文书
毕业生自荐求职信书写的技巧
2019/08/26 职场文书
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
2021/04/01 PHP
服务器nginx权限被拒绝解决案例
2022/09/23 Servers