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 相关文章推荐
Pyramid Mako模板引入helper对象的步骤方法
Nov 27 Python
Python聊天室实例程序分享
Jan 05 Python
Python使用pylab库实现绘制直方图功能示例
Jun 01 Python
利用python循环创建多个文件的方法
Oct 25 Python
理想高通滤波实现Python opencv示例
Jan 30 Python
python+pyqt5实现图片批量缩放工具
Mar 18 Python
关于pandas的离散化,面元划分详解
Nov 22 Python
python取均匀不重复的随机数方式
Nov 27 Python
Python numpy多维数组实现原理详解
Mar 10 Python
python不相等的两个字符串的 if 条件判断为True详解
Mar 12 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
Apr 14 Python
基于pycharm实现批量修改变量名
Jun 02 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实现的功能是显示8条基色色带
2006/10/09 PHP
php 正则 过滤html 的超链接
2009/06/02 PHP
解析thinkphp的左右值无限分类
2013/06/20 PHP
php实现curl模拟ftp上传的方法
2015/07/29 PHP
PHP中include/require/include_once/require_once使用心得
2016/08/28 PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
2017/02/15 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
通过PHP实现用户注册后邮箱验证激活
2020/11/10 PHP
基于Jquery实现表格动态分页实现代码
2011/06/21 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
JS中操作JSON总结
2020/12/06 Javascript
javascript页面渲染速度测试脚本分享
2014/04/15 Javascript
基于jQuery实现返回顶部实例代码
2016/01/01 Javascript
javascript类型系统_正则表达式RegExp类型详解
2016/06/24 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
jquery表单验证实例仿Toast提示效果
2017/03/03 Javascript
JavaScript中this的用法及this在不同应用场景的作用解析
2017/04/13 Javascript
基于Vue单文件组件详解
2017/09/15 Javascript
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
2017/09/22 jQuery
Angular中点击li标签实现更改颜色的核心代码
2017/12/08 Javascript
微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法
2017/12/14 Javascript
解决vue2.0动态绑定图片src属性值初始化时报错的问题
2018/03/14 Javascript
史上最为详细的javascript继承(推荐)
2019/05/18 Javascript
在layui中select更改后生效的方法
2019/09/05 Javascript
vue-cli设置publicPath小记
2020/04/14 Javascript
对python tkinter窗口弹出置顶的方法详解
2019/06/14 Python
Python values()与itervalues()的用法详解
2019/11/27 Python
python中numpy数组与list相互转换实例方法
2021/01/29 Python
县长“四风”对照检查材料思想汇报
2014/10/05 职场文书
2014年营业员工作总结
2014/11/18 职场文书
2015年教师自我评价范文
2015/03/04 职场文书
务工证明怎么写
2015/06/18 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
基于Golang 高并发问题的解决方案
2021/05/08 Golang
详解CSS故障艺术
2021/05/25 HTML / CSS
Nginx缓存设置案例详解
2021/09/15 Servers