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爬虫教程之爬取百度贴吧并下载的示例
Mar 07 Python
python实现斐波那契递归函数的方法
Sep 08 Python
Python打印斐波拉契数列实例
Jul 07 Python
举例讲解Linux系统下Python调用系统Shell的方法
Nov 07 Python
Python利用matplotlib生成图片背景及图例透明的效果
Apr 27 Python
Python随机生成手机号、数字的方法详解
Jul 21 Python
用于业余项目的8个优秀Python库
Sep 21 Python
Python的条件锁与事件共享详解
Sep 12 Python
Python数据可视化图实现过程详解
Jun 12 Python
使用pytorch实现论文中的unet网络
Jun 24 Python
如何创建一个Flask项目并进行简单配置
Nov 18 Python
anaconda python3.8安装后降级
Jun 11 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转换文件夹下所有文件编码的实现代码
2013/06/06 PHP
改写函数实现PHP二维/三维数组转字符串
2013/09/13 PHP
php上传图片到指定位置路径保存到数据库的具体实现
2013/12/30 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
php使用curl简单抓取远程url的方法
2015/03/13 PHP
PHP基于自定义类随机生成姓名的方法示例
2017/08/05 PHP
JavaScript下申明对象的几种方法小结
2008/10/02 Javascript
jquery $(document).ready() 与window.onload的区别
2009/12/28 Javascript
jQuery EasyUI 的EasyLoader功能介绍
2010/09/12 Javascript
JavaScript控制Session操作方法
2013/01/17 Javascript
判断客户浏览器是否支持cookie的示例代码
2013/12/23 Javascript
加随机数引入脚本不让浏览器读取缓存
2014/09/04 Javascript
javascript检测是否联网的实现代码
2014/09/28 Javascript
jquery插件ajaxupload实现文件上传操作
2015/12/09 Javascript
基于jquery插件编写countdown计时器
2016/06/12 Javascript
使用jQuery,Angular实现登录界面验证码详解
2017/04/27 jQuery
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
Vue项目中使用WebUploader实现文件上传的方法
2019/07/21 Javascript
微信小程序vant弹窗组件的实现方式
2020/02/21 Javascript
详解template标签用法(含vue中的用法总结)
2021/01/12 Vue.js
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
Python多线程实现支付模拟请求过程解析
2020/04/21 Python
python SOCKET编程基础入门
2021/02/27 Python
英国最大的线上保健品零售商之一:Vitamin Planet
2016/12/01 全球购物
报到证丢失证明
2014/01/11 职场文书
入学申请自荐信范文
2014/02/26 职场文书
企业职业病防治方案
2014/05/29 职场文书
放飞理想演讲稿
2014/09/09 职场文书
2015年元旦演讲稿
2014/09/12 职场文书
2015年艾滋病防治工作总结
2015/05/22 职场文书
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL
golang switch语句的灵活写法介绍
2021/05/06 Golang
基于Java的MathML转图片的方法(示例代码)
2021/06/23 Java/Android
Java 数组的使用
2022/05/11 Java/Android
Win11 21h2可以升级22h2吗?看看你的电脑符不符合要求
2022/07/07 数码科技