这篇文章给大家介绍使用Python2.7怎么在多进程中开发多线程,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
python常用的库:1.requesuts;2.scrapy;3.pillow;4.twisted;5.numpy;6.matplotlib;7.pygama;8.ipyhton等。
可以使得程序执行效率至少提升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)
关于使用Python2.7怎么在多进程中开发多线程就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。