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 序列化 pickle/cPickle模块使用介绍
Nov 30 Python
python实现挑选出来100以内的质数
Mar 24 Python
python使用PIL模块实现给图片打水印的方法
May 22 Python
Django imgareaselect手动剪切头像实现方法
May 26 Python
Python中random模块生成随机数详解
Mar 10 Python
python flask实现分页效果
Jun 27 Python
python itchat实现微信自动回复的示例代码
Aug 14 Python
python 实现dict转json并保存文件
Dec 05 Python
jupyter notebook的安装与使用详解
May 18 Python
Java爬虫技术框架之Heritrix框架详解
Jul 22 Python
改变 Python 中线程执行顺序的方法
Sep 24 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
Nov 30 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 连接mysql连接被重置的解决方法
2011/02/15 PHP
PHP获取数组中重复最多的元素的实现方法
2014/11/11 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
2014/12/15 PHP
PHP使用内置dir类实现目录遍历删除
2015/03/31 PHP
php中smarty区域循环的方法
2015/06/11 PHP
ExtJs 表单提交登陆实现代码
2010/08/19 Javascript
web前端开发也需要日志
2010/12/09 Javascript
JavaScript中Number对象的toFixed() 方法详解
2016/09/02 Javascript
Bootstrap CSS布局之表格
2016/12/17 Javascript
JavaScript判断浏览器和hack滚动条的写法
2017/07/23 Javascript
node.js利用socket.io实现多人在线匹配联机五子棋
2018/05/31 Javascript
JavaScript使用ul中li标签实现删除效果
2019/04/15 Javascript
使vue实现jQuery调用的两种方法
2019/05/12 jQuery
你了解vue3.0响应式数据怎么实现吗
2019/06/07 Javascript
详解搭建一个vue-cli的移动端H5开发模板
2020/01/17 Javascript
基于Vue中的父子传值问题解决
2020/07/27 Javascript
Python标准库之多进程(multiprocessing包)介绍
2014/11/25 Python
Python随机生成均匀分布在单位圆内的点代码示例
2017/11/13 Python
Python 12306抢火车票脚本
2018/02/07 Python
python opencv之SURF算法示例
2018/02/24 Python
python3学生名片管理v2.0版
2018/11/29 Python
Django 多环境配置详解
2019/05/14 Python
使用python实现滑动验证码功能
2019/08/05 Python
Python脚本操作Excel实现批量替换功能
2019/11/20 Python
Python实现图片批量加入水印代码实例
2019/11/30 Python
Python爬虫:Request Payload和Form Data的简单区别说明
2020/04/30 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
2021/01/05 Python
俄罗斯最大的灯具网站:Fandeco
2020/03/14 全球购物
优质飞蝇钓和渔具:RiverBum
2020/05/10 全球购物
实习自我鉴定模板
2013/09/28 职场文书
护理专业本科生自荐信
2013/10/01 职场文书
给排水专业应届生求职信
2013/10/12 职场文书
大学自我评价
2014/02/12 职场文书
2015入党个人自传范文
2015/06/26 职场文书
总结一些Java常用的加密算法
2021/06/11 Java/Android