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结合jieba和wordcloud实现词云效果
Sep 05 Python
Django 跨域请求处理的示例代码
May 02 Python
python用post访问restful服务接口的方法
Dec 07 Python
python取余运算符知识点详解
Jun 27 Python
python实现把二维列表变为一维列表的方法分析
Oct 08 Python
python实现在内存中读写str和二进制数据代码
Apr 24 Python
Python基于数列实现购物车程序过程详解
Jun 09 Python
python要安装在哪个盘
Jun 15 Python
Django-silk性能测试工具安装及使用解析
Nov 28 Python
Python 数据结构之十大经典排序算法一文通关
Oct 16 Python
Python图像处理库PIL详细使用说明
Apr 06 Python
Python加密技术之RSA加密解密的实现
Apr 08 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函数preg_match_all正则表达式的基本使用详细解析
2013/08/31 PHP
html静态页面调用php文件的方法
2014/11/13 PHP
PHP使用PDO连接ACCESS数据库
2015/03/05 PHP
CodeIgniter针对数据库的连接、配置及使用方法
2016/03/03 PHP
csdn 博客的css样式 v3
2009/02/24 Javascript
javascript全局变量封装模块实现代码
2012/11/28 Javascript
ajax处理php返回json数据的实例代码
2013/01/24 Javascript
JavaScript格式化日期时间的方法和自定义格式化函数示例
2014/04/04 Javascript
有关Promises异步问题详解
2015/11/13 Javascript
javascript解决小数的加减乘除精度丢失的方案
2016/05/31 Javascript
ajax与json 获取数据并在前台使用简单实例
2017/01/19 Javascript
js oncontextmenu事件使用详解
2017/03/25 Javascript
谈谈对vue响应式数据更新的误解
2017/08/01 Javascript
react路由配置方式详解
2017/08/07 Javascript
vuejs父子组件之间数据交互详解
2017/08/09 Javascript
vue 父组件给子组件传值子组件给父组件传值的实例代码
2019/04/15 Javascript
JavaScript箭头函数中的this详解
2019/06/19 Javascript
vue.js中ref和$refs的使用及示例讲解
2019/08/14 Javascript
关于Vue中axios的封装实例详解
2019/10/20 Javascript
Vue实现小购物车功能
2020/12/21 Vue.js
Python数据库的连接实现方法与注意事项
2016/02/27 Python
pandas中apply和transform方法的性能比较及区别介绍
2018/10/30 Python
Python 实现子类获取父类的类成员方法
2019/01/11 Python
Python语言检测模块langid和langdetect的使用实例
2019/02/19 Python
Python定时发送天气预报邮件代码实例
2019/09/09 Python
如何用tempfile库创建python进程中的临时文件
2021/01/28 Python
html5中去掉input type date默认样式的方法
2018/09/06 HTML / CSS
HTML5中在title标题标签里设置小图标的方法
2020/06/23 HTML / CSS
室内设计实习自我鉴定
2013/09/25 职场文书
物理专业大学生职业生涯规划书
2014/02/07 职场文书
2014银行领导班子群众路线对照检查材料思想汇报
2014/09/17 职场文书
个人年度总结报告
2015/03/09 职场文书
2015年学校消防安全工作总结
2015/10/14 职场文书
文明医院的标语集锦!
2019/07/24 职场文书
SpringBoot集成Redis,并自定义对象序列化操作
2021/06/22 Java/Android
Python list列表删除元素的4种方法
2021/11/01 Python