当前位置: 首页 > news >正文

Python 多线程不加锁分块读取文件的方法

多线程读取或写入,一般会涉及到同步的问题,否则产生的结果是无法预期的。那么在读取一个文件的时候,我们可以通过加锁,但读不像写操作,会导致文件错误,另外锁操作是有一定的耗时。因此通过文件分块,可以比较有效的解决多线程读问题,之前看到有人写的分块操作,比较复杂,需要实现建立好线程以及所读取块信息,在这里,我提供了一种比较简便的方法,以供参考。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

#!/user/bin/env python

#_*_coding:utf-8_*_

fromthreadingimportThread

importtime

fromprocessingimportProcess, Queue

frommultiprocessingimportProcess

file_path='t'

fd=open(file_path,'r')

defdeal(thread_num):

i=1

line_list=[]

#20是我的文件行数,正式情况下可以通过wc -l t获取

whilei <=20/thread_num:

line_list.append(fd.readline())

i+=1

returnline_list

deftodo(thread_name, line_list):

# print 'thread_name:',thread_name,'start'

forlineinline_list:

printstr(thread_name)+' counsume:'+line

# print 'thread_name:', thread_name, 'end'

if__name__=='__main__':

thread_num=10

thread_list=[]

foriinrange(thread_num):

line_list=deal(thread_num)

t=Thread(target=todo, args=[i, line_list])

t.start()

thread_list.append(t)

fortinthread_list:

t.join()

下面是文件格式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

运行的结果如下:

以上这篇Python 多线程不加锁分块读取文件的方法就是小编分享给大家的全部内容了

http://www.jsqmd.com/news/702385/

相关文章:

  • 【花雕学编程】Arduino BLDC 之多机器人无线通信协同搬运系统
  • BetterJoy:解锁Switch手柄在PC平台的全新可能
  • 2026年3月可靠的地脚螺栓供应商推荐,地脚螺栓/压板总成/预埋件/鱼尾螺栓/道钉锚固剂,地脚螺栓厂商找哪家 - 品牌推荐师
  • nli-MiniLM2-L6-H768教学应用:NLP实验课中零样本学习概念的交互式验证工具
  • 深度学习早停机制:原理与实践指南
  • 为什么顶尖团队已禁用旧版IntelliSense?VSCode 2026补全系统通过ISO/IEC 25010可维护性认证(附企业级灰度部署Checklist)
  • Qwen3.5-2B开源镜像教程:模型量化(AWQ/GGUF)降低至3GB显存运行实测
  • 大数据时代:简单统计模型如何超越复杂算法
  • C++26反射实战入门:5个可立即复用的元编程模式,告别冗余SFINAE和宏地狱
  • nli-MiniLM2-L6-H768参数详解:630MB轻量模型的NLI性能实测
  • RWKV-7模型数据库课程设计助手:从ER图到SQL语句智能生成
  • Scroll Reverser终极指南:如何在macOS上为不同设备设置独立滚动方向
  • 5个实用技巧高效配置BetterGI:原神自动化脚本终极指南
  • R语言实现非线性回归的4种实战方法
  • 2026年论文降AIGC教程:实测知网AI率从87%降到7%,避坑技巧全揭秘 - 降AI实验室
  • 开源漫画下载神器:3步实现E-Hentai漫画批量下载自动化
  • CUDA加速因果深度卷积架构设计:时序数据处理的10倍性能优化方案
  • ncmdump音乐解密工具:一键解锁网易云音乐加密文件的终极指南
  • 【2024唯一深度测评】C++26 `std::reflexpr` vs Boost.PFR vs 自研宏反射:编译耗时/二进制增长/调试友好度三维PK
  • 魔兽争霸3终极优化指南:WarcraftHelper一键解决兼容性问题
  • SuperCoder:开源多智能体自主软件开发系统实战解析
  • 2026年富马酸专业生产厂推荐,哪家性价比高值得选? - 工业设备
  • 如何用Python脚本突破百度网盘限速?三步实现高速下载
  • LM Z-Image Python爬虫数据可视化:自动将爬取内容转化为信息图
  • Phi-3.5-mini-instruct实操手册:LoRA微调Phi-3.5-mini-instruct定制垂直领域
  • 从零构建ReAct智能体:基于TypeScript的LLM应用开发实践
  • Keras活动正则化:原理、实现与调优指南
  • Claude Code高效编程指南:从提示词到工作流的AI辅助实践
  • 中兴光猫终极解锁指南:5分钟获取完整控制权,开启隐藏功能
  • 说说2026年溶于乙醇的标准富马酸,哪家口碑好 - 工业品网