# encoding=utf-8
import sys
import time
from concurrent.futures import ThreadPoolExecutor
def llog_print_yzy(*msg):
# llog_print_yzy('fa啊发', 3, sys._getframe().f_lineno) # call
# 最后一个参数是 日志打印的行号
last_index = len(msg) - 1
msg_str = ''
for i in range(last_index):
'''
定义函数不确定有多少参数时,可用*来表示多个参数
连接字符串的方式,可以让print的输出之间 去掉空格。
把'类型'放'值'前面,是因为可以对齐,否则用\t都不齐
不想要各个参数的打印,直接把下面这行打印去掉就好了:
'''
# print('params', i + 1, '----------- [类型]:', type(msg[i]), ',-----------[值]:', str(msg[i]))
msg_str += str(msg[i])
if i != last_index - 1:
msg_str += ', '
print('[Line]: ' + str(msg[last_index]), ', [message]: ', msg_str, end='\n\n')
# llog_print_yzy('fa啊发', 3, sys._getframe().f_lineno)
def print_nums(n):
# 写入不同的文件,应该就不会发生冲突
with open(r'D:\T\Documents\MobileFile\桌面\python学习\main_7\\' + str(n) + '.txt', 'w+') as file:
file.write(
'xxx另外还有mode属性:看查文件对象的模式、closed属性:判断文件是否关闭、name属性:返回文件名这里我还要介绍一个关键字with,他是一个表达式能为调用的文件对象别名,且自动关闭文件。xxxx另外还有mode属性:看查文件对象的模式、closed属性:判断文件是否关闭、name属性:返回文件名这里我还要介绍一个关键字with,他是一个表达式能为调用的文件对象别名,且自动关闭文件。xxx')
file.write(str(n))
file.write(str(n))
file.write(str(n))
file.write(str(n))
file.write(str(n))
file.write(
'xxx另外还有mode属性:看查文件对象的模式、closed属性:判断文件是否关闭、name属性:返回文件名这里我还要介绍一个关键字with,他是一个表达式能为调用的文件对象别名,且自动关闭文件。xxx')
print(n)
''' 单线程 '''
# start_time = time.time()
# for n in range(1, 30000 + 1):
# # range(1, 11) # 从 1 开始到 10
# print_nums(n)
# end_time = time.time()
#
# cost_time = '%.2f' % (end_time - start_time)
# llog_print_yzy(cost_time + 's', sys._getframe().f_lineno)
# ====================================
''' 多线程 '''
# list_items = []
# for n in range(1, 30000 + 1):
# # range(1, 11) # 从 1 开始到 10
# list_items.append(n)
#
# start_time = time.time()
#
# with ThreadPoolExecutor() as pool:
# # 函数名,准备好的参数列表
# pool.map(print_nums, list_items)
#
# end_time = time.time()
# cost_time = '%.2f' % (end_time - start_time)
# llog_print_yzy(cost_time + 's', sys._getframe().f_lineno)
# ========================================
''' 实现不解压 就提取文件:敢想,然后网上搜索 '''
import zipfile, os, re
file_path = r'D:\T\Documents\MobileFile\桌面\python学习\main_7'
file_list = os.listdir(file_path) # get 当前目录下的所有 文件名字和文件夹的名字。没有递归
# 得到当前目录下所有的zip文件
new_list = []
for i in file_list:
if re.findall(r'.*\.zip', i):
new_list.append(i)
for i in new_list:
# 更具体的zip_path
zip_path = "D:\T\Documents\MobileFile\桌面\python学习\main_7\\" + i
f = zipfile.ZipFile(zip_path, "r")
inner_html_name = ''
for f_name in f.namelist(): # f.namelist() 会返回压缩包内所有文件名的列表。
if '.html' in f_name:
inner_html_name = f_name
break
innet_data = f.read(inner_html_name) # 因为很确定只有一个html
llog_print_yzy(i, innet_data, sys._getframe().f_lineno)
# 因为innet_data 是一个byte类型,转换了一下str,才能使用正则
re_result = re.findall('layer_id:(\d)+', str(innet_data))
llog_print_yzy(re_result, sys._getframe().f_lineno)
Python 多线程(针对磁盘IO效率的改进)
于 2024-03-21 01:21:10 首次发布
本文介绍了如何在Python中使用多线程进行文件操作,包括写入不同文件、使用`ThreadPoolExecutor`进行并发处理,以及通过解压zip文件提取特定HTML文件的内容。同时展示了如何使用正则表达式从提取的数据中获取特定信息。
摘要由CSDN通过智能技术生成