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设置socket代理的方法
Jan 14 Python
在Python中使用base64模块处理字符编码的教程
Apr 28 Python
简单分析Python中用fork()函数生成的子进程
May 04 Python
python 容器总结整理
Apr 04 Python
浅谈使用Python内置函数getattr实现分发模式
Jan 22 Python
使用k8s部署Django项目的方法步骤
Jan 14 Python
详解Python匿名函数(lambda函数)
Apr 19 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
Nov 29 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
Nov 18 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
Feb 01 Python
给numpy.array增加维度的超简单方法
Jun 02 Python
python神经网络学习 使用Keras进行回归运算
May 04 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
如何跨站抓取别的站点的页面的补充
2006/10/09 PHP
PH P5.2至5.5、5.6的新增功能详解
2014/07/14 PHP
阿里云的WindowsServer2016上部署php+apache
2018/07/17 PHP
tp5 实现列表数据根据状态排序
2019/10/18 PHP
脚本收藏iframe
2006/07/21 Javascript
jQuery 白痴级入门教程
2009/11/11 Javascript
基于JQuery.timer插件实现一个计时器
2010/04/25 Javascript
基于jQuery的固定表格头部的代码(IE6,7,8测试通过)
2010/05/18 Javascript
js的flv视频播放器插件使用方法
2015/06/23 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
JavaScript实现简单的日历效果
2016/09/25 Javascript
jQuery事件对象的属性和方法详解
2017/09/09 jQuery
Nodejs+express+ejs简单使用实例代码
2017/09/18 NodeJs
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
vue组件实现进度条效果
2018/06/06 Javascript
vue 界面刷新数据被清除 localStorage的使用详解
2018/09/16 Javascript
对angular 实时更新模板视图的方法$apply详解
2018/10/09 Javascript
vue+webpack中配置ESLint
2018/11/07 Javascript
Vue的生命周期操作示例
2019/09/17 Javascript
为什么Vue3.0使用Proxy实现数据监听(defineProperty表示不背这个锅)
2019/10/14 Javascript
谈谈JavaScript中的函数
2020/09/08 Javascript
win10系统中安装scrapy-1.1
2016/07/03 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
Python浮点型(float)运算结果不正确的解决方案
2020/09/22 Python
python如何编写类似nmap的扫描工具
2020/11/06 Python
Python爬虫自动化获取华图和粉笔网站的错题(推荐)
2021/01/08 Python
顶岗实习计划书
2014/01/10 职场文书
大学生党员学习焦裕禄精神思想汇报
2014/09/10 职场文书
导游词400字
2015/02/13 职场文书
基石观后感
2015/06/12 职场文书
2015最新民情日记范文
2015/06/26 职场文书
大学生安全教育心得体会
2016/01/15 职场文书
只需要这一行代码就能让python计算速度提高十倍
2021/05/24 Python
Win10系统下配置Java环境变量
2021/06/13 Java/Android
解析Redis Cluster原理
2021/06/21 Redis
关于k8s环境部署mysql主从的问题
2022/03/13 MySQL