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 相关文章推荐
Python3基础之基本运算符概述
Aug 13 Python
浅谈python中截取字符函数strip,lstrip,rstrip
Jul 17 Python
python scipy求解非线性方程的方法(fsolve/root)
Nov 12 Python
基于python的socket实现单机五子棋到双人对战
Mar 24 Python
用Python从0开始实现一个中文拼音输入法的思路详解
Jul 20 Python
Python3 翻转二叉树的实现
Sep 30 Python
Python 3.8正式发布,来尝鲜这些新特性吧
Oct 15 Python
Python Pillow.Image 图像保存和参数选择方式
Jan 09 Python
利用keras加载训练好的.H5文件,并实现预测图片
Jan 24 Python
pyinstaller打包成无控制台程序时运行出错(与popen冲突的解决方法)
Apr 15 Python
Python基于正则表达式实现计算器功能
Jul 13 Python
Python Django框架介绍之模板标签及模板的继承
May 27 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
php 生成短网址原理及代码
2014/01/23 PHP
Codeigniter校验ip地址的方法
2015/03/21 PHP
eval与window.eval的差别分析
2011/03/17 Javascript
基于jquery的无刷新分页技术
2011/06/11 Javascript
js中实现多态采用和继承类似的方法
2014/08/22 Javascript
node.js入门实例helloworld详解
2015/12/23 Javascript
详解Vue2中组件间通信的解决全方案
2017/07/28 Javascript
Angular.js初始化之ng-app的自动绑定与手动绑定详解
2017/07/31 Javascript
Angular2 组件交互实例详解
2017/08/24 Javascript
jQuery实现的文字逐行向上间歇滚动效果示例
2017/09/06 jQuery
JS手机端touch事件计算滑动距离的方法示例
2017/10/26 Javascript
深入理解javascript中的this
2021/02/08 Javascript
下载安装setuptool和pip linux安装pip    
2014/01/24 Python
Python操作MySQL简单实现方法
2015/01/26 Python
简述Python中的面向对象编程的概念
2015/04/27 Python
Python利用公共键如何对字典列表进行排序详解
2018/05/19 Python
利用Python进行数据可视化常见的9种方法!超实用!
2018/07/11 Python
Django之无名分组和有名分组的实现
2019/04/16 Python
python 列表推导式使用详解
2019/08/29 Python
Python 中list ,set,dict的大规模查找效率对比详解
2019/10/11 Python
python3爬取torrent种子链接实例
2020/01/16 Python
Python处理mysql特殊字符的问题
2020/03/02 Python
python实现斗地主分牌洗牌
2020/06/22 Python
css3实例教程 一款纯css3实现的环形导航菜单
2014/10/20 HTML / CSS
CSS3实现菜单悬停效果
2020/11/17 HTML / CSS
微信html5页面调用第三方位置导航的示例
2018/03/14 HTML / CSS
国际知名设计师时装商店:Coggles
2016/09/05 全球购物
音乐教学案例
2014/01/30 职场文书
节水倡议书范文
2014/04/15 职场文书
我的中国梦演讲稿300字
2014/08/19 职场文书
在校大学生自我评价范文
2014/09/12 职场文书
四风问题个人对照检查剖析材料
2014/09/27 职场文书
2014年计划生育协会工作总结
2014/11/14 职场文书
初中作文评语
2014/12/25 职场文书
莫言诺贝尔获奖感言(全文)
2015/07/31 职场文书
Go语言-为什么返回值为接口类型,却返回结构体
2021/04/24 Golang