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 相关文章推荐
使用url_helper简化Python中Django框架的url配置教程
May 30 Python
详解Django框架中用户的登录和退出的实现
Jul 23 Python
python学习之编写查询ip程序
Feb 27 Python
教你用Python脚本快速为iOS10生成图标和截屏
Sep 22 Python
Python中如何获取类属性的列表
Dec 26 Python
Python处理文本文件中控制字符的方法
Feb 07 Python
Python使用正则表达式实现文本替换的方法
Apr 18 Python
Python图像处理之颜色的定义与使用分析
Jan 03 Python
python配置文件写入过程详解
Oct 19 Python
Python aiohttp百万并发极限测试实例分析
Oct 26 Python
Python实现自动访问网页的例子
Feb 21 Python
用Python可视化新冠疫情数据
Jan 18 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/03/13 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
2014/07/28 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2021/03/09 PHP
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
fckeditor 获取文本框值的实现代码
2009/02/09 Javascript
再探JavaScript作用域
2014/09/24 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
使用JavaScript实现ajax的实例代码
2016/05/11 Javascript
JS高级运动实例分析
2016/12/20 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
对vue中v-if的常见使用方法详解
2018/09/28 Javascript
electron制作仿制qq聊天界面的示例代码
2018/11/26 Javascript
jQuery事件blur()方法的使用实例讲解
2019/03/30 jQuery
微信小程序实现购物车代码实例详解
2019/08/29 Javascript
VUE项目实现主题切换的多种方法
2020/11/26 Vue.js
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
python使用scrapy解析js示例
2014/01/23 Python
浅谈python内置变量-reversed(seq)
2017/06/21 Python
python如何获取列表中每个元素的下标位置
2019/07/01 Python
关于pycharm中pip版本10.0无法使用的解决办法
2019/10/10 Python
Python 脚本实现淘宝准点秒杀功能
2019/11/13 Python
pytorch 获取tensor维度信息示例
2020/01/03 Python
使用TensorFlow搭建一个全连接神经网络教程
2020/02/06 Python
在pycharm中为项目导入anacodna环境的操作方法
2020/02/12 Python
利用python实现凯撒密码加解密功能
2020/03/31 Python
html5与css3小应用
2013/04/03 HTML / CSS
详解HTML5之pushstate、popstate操作history,无刷新改变当前url
2017/03/15 HTML / CSS
企业内控岗位的职责
2014/02/07 职场文书
向领导表决心的话
2014/03/11 职场文书
白血病捐款倡议书
2014/05/14 职场文书
民警群众路线教育实践活动对照检查材料
2014/10/04 职场文书
2015小学师德工作总结
2015/07/21 职场文书
教师教育教学随笔
2015/08/15 职场文书
2016大学军训心得体会
2016/01/11 职场文书
2019经典广告词集锦!
2019/07/02 职场文书