Python2.7实现多进程下开发多线程示例


Posted in Python onMay 31, 2019

简单的基于Python2.7版本的多进程下开发多线程的示例,供大家参考,具体内容如下

可以使得程序执行效率至少提升10倍

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
 @Time : 2018/10/24
 @Author : LiuXueWen
 @Site : 
 @File : transfer.py
 @Software: PyCharm
 @Description: 
"""

import os
import traceback
import threading
from multiprocessing import Pool
from multiprocessing.dummy import Pool as ThreadPool


# 兼容python2.7上多线程的bug,不加上下面的反代理程序不能正常执行
def proxy(cls_instance, i):
 return cls_instance.multiprocess_thread(i)
def proxy2(cls_instance, i):
 return cls_instance.file_operation(i)

class file2transfer():
 # 多进程执行程序
 def multiprocessingTransferFiles(self):
  try:
   # 创建进程池
   p = Pool()
   //参数末尾必须加上逗号
   p.apply_async(proxy, args=(self, self.root_path,))
   p.close()
   p.join()
  except Exception as e:
   print(e)

 # 每个进程下的多线程执行,线程数等于当前机器的核数
 def multiprocess_thread(self, root_path):
  try:
   # 创建线程锁
   lock = threading.RLock()
   lock.acquire()
   # 获取每个文件
   for pfile in os.listdir(root_path):
    # 获取文件的完整路径
    full_file_path = os.path.join(root_path, pfile)
    # 多线程读写文件
    p = ThreadPool()
    # 执行线程
    p.apply_async(proxy2, args=(self, full_file_path,))
    p.close()
    p.join()
  except Exception as e:
   print(e)
  finally:
   # 释放线程锁
   lock.release()

 # 对每个文件夹下的每个文件进行操作
 def file_operation(self, full_file_path):
  try:
   // TODO 真正需要单独执行的操作
   pass
  except Exception as e:
   print(e)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中遍历文件的3个方法
Sep 02 Python
Python3.6正式版新特性预览
Dec 15 Python
Python用list或dict字段模式读取文件的方法
Jan 10 Python
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
Feb 03 Python
python实现判断一个字符串是否是合法IP地址的示例
Jun 04 Python
python数据批量写入ScrolledText的优化方法
Oct 11 Python
python实现批量注册网站用户的示例
Feb 22 Python
Python 调用 Windows API COM 新法
Aug 22 Python
利用Tensorflow的队列多线程读取数据方式
Feb 05 Python
Tensorflow加载Vgg预训练模型操作
May 26 Python
Python getattr()函数使用方法代码实例
Aug 10 Python
Python 制作自动化翻译工具
Apr 25 Python
Python3内置模块之json编解码方法小结【推荐】
Dec 09 #Python
一文了解Python并发编程的工程实现方法
May 31 #Python
Python微信操控itchat的方法
May 31 #Python
python基于SMTP协议发送邮件
May 31 #Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
May 30 #Python
Python自定义函数计算给定日期是该年第几天的方法示例
May 30 #Python
基于Python打造账号共享浏览器功能
May 30 #Python
You might like
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
2013/02/06 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
2014/01/15 PHP
php5.2以下版本无json_decode函数的解决方法
2014/05/25 PHP
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
php swoft框架实例用法
2020/12/22 PHP
详谈 Jquery Ajax异步处理Json数据.
2011/09/09 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
JavaScript加强之自定义event事件
2013/09/21 Javascript
JavaScript和CSS交互的方法汇总
2014/12/02 Javascript
javascript自定义滚动条实现代码
2020/04/20 Javascript
Google 地图API资料整理及详细介绍
2016/08/06 Javascript
H5上传本地图片并预览功能
2017/05/08 Javascript
详解JS模块导入导出
2017/12/20 Javascript
微信小程序之圆形进度条实现思路
2018/02/22 Javascript
在js代码拼接dom对象到页面上的模板总结
2018/10/21 Javascript
浅谈Vue数据响应
2018/11/05 Javascript
js实现超级玛丽小游戏
2020/03/18 Javascript
基于postman获取动态数据过程详解
2020/09/08 Javascript
Python实现的数据结构与算法之基本搜索详解
2015/04/22 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
2017/04/18 Python
Python定义函数功能与用法实例详解
2019/04/08 Python
Python 如何优雅的将数字转化为时间格式的方法
2019/09/26 Python
Python如何获取Win7,Win10系统缩放大小
2020/01/10 Python
Pytorch中的VGG实现修改最后一层FC
2020/01/15 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
2020/11/13 Python
哥伦比亚加拿大官网:Columbia Sportswear Canada
2020/09/07 全球购物
天逸系统(武汉)有限公司Java笔试题
2015/12/29 面试题
How TDD works
2012/09/30 面试题
初始化了一个没有run()方法的线程类,是否会出错?
2014/03/27 面试题
广告学专业应届生求职信
2013/10/01 职场文书
学生党员思想汇报范文
2014/01/09 职场文书
情侣吵架检讨书
2014/02/05 职场文书
教师廉洁自律承诺书
2014/05/26 职场文书
2014报到证办理个人委托书
2014/10/08 职场文书
合伙开公司协议书范本
2014/10/28 职场文书
公司前台接待岗位职责
2015/04/03 职场文书