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中global与nonlocal比较
Nov 21 Python
python实现分析apache和nginx日志文件并输出访客ip列表的方法
Apr 04 Python
Python中字典的基础知识归纳小结
Aug 19 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
Nov 23 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
Nov 30 Python
Python3非对称加密算法RSA实例详解
Dec 06 Python
Python socket 套接字实现通信详解
Aug 27 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
Sep 04 Python
Python pandas库中的isnull()详解
Dec 26 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
Jan 15 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
Aug 28 Python
能让Python提速超40倍的神器Cython详解
Jun 24 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小程序自动提交到自助友情连接
2009/11/24 PHP
PHP中array_slice函数用法实例详解
2014/11/25 PHP
PHP传参之传值与传址的区别
2015/04/24 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
通过JAVAScript实现页面自适应
2007/01/19 Javascript
javascript,jquery闭包概念分析
2010/06/19 Javascript
js中一个函数获取另一个函数返回值问题探讨
2013/11/21 Javascript
js日期对象兼容性的处理方法
2014/01/28 Javascript
JavaScript使用cookie实现记住账号密码功能
2015/04/27 Javascript
jquery超简单实现手风琴效果的方法
2015/06/05 Javascript
JS+CSS实现带有碰撞缓冲效果的竖向导航条代码
2015/09/15 Javascript
JavaScript模版引擎的基本实现方法浅析
2016/02/15 Javascript
Node.js读写文件之批量替换图片的实现方法
2016/09/07 Javascript
JavaScript严格模式详解
2017/01/16 Javascript
基于jQuery插件jqzoom实现的图片放大镜效果示例
2017/01/23 Javascript
js判断是否是手机页面
2017/03/17 Javascript
VueJs 搭建Axios接口请求工具
2017/11/20 Javascript
JavaScript实现简单随机点名器
2019/11/21 Javascript
浅谈vue单页面中有多个echarts图表时的公用代码写法
2020/07/19 Javascript
vue 解决data中定义图片相对路径页面不显示的问题
2020/08/13 Javascript
Python转码问题的解决方法
2008/10/07 Python
Python引用传值概念与用法实例小结
2017/10/07 Python
简单实现python聊天程序
2018/04/01 Python
python实现beta分布概率密度函数的方法
2019/07/08 Python
python修改FTP服务器上的文件名
2019/09/11 Python
python中的数组赋值与拷贝的区别详解
2019/11/26 Python
Python批量将图片灰度化的实现代码
2020/04/11 Python
python import 上级目录的导入
2020/11/03 Python
名人珠宝设计师:Melinda Maria Jewelry
2019/03/06 全球购物
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
交通事故赔偿协议书范本
2014/04/15 职场文书
实习单位鉴定评语
2014/04/26 职场文书
地质灾害防治方案
2014/05/14 职场文书
门店业绩提升方案
2014/06/08 职场文书
预防艾滋病宣传标语
2014/06/25 职场文书
办公室班子四风问题对照检查材料
2014/10/04 职场文书