免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2415 | 回复: 6
打印 上一主题 下一主题

关于多线程处理文本内容实现思路、参考代码。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-06-14 11:08 |只看该作者 |倒序浏览
本帖最后由 xiaoqi8866 于 2012-06-14 11:09 编辑

最近刚学习python . 想实现一个这样的功能,但是由于开发经验少,不知道如何实现。

我一个文本 , 里面 有 N 行数据 .  例如 1 - 100

是如下格式
1
2
3
4
...........

我想用 线程方式,打印出 文件 。  例如  我想 起5个线程.  来处理这个文本 。

那么就是 每个线程处理20 行.

希望 第一线程 打印  

线程 1  处理 1行
线程 1  处理 2行
线程 1  处理 3行
....
线程 2  处理 21行
线程 2  处理 22行
.....

线程3 处理 41行
线程3 处理 42行
....

求编程思路 或 参考代码。。谢谢

论坛徽章:
0
2 [报告]
发表于 2012-06-14 12:21 |只看该作者
我觉得这种情况用多线程可能快不起来吧,python用多进程可能还行,处理起来可能也比较复杂,但是不知道能快多少。
这有别人写好的代码:
http://type.so/python/multi-thread-read-file.html

论坛徽章:
0
3 [报告]
发表于 2012-06-14 12:37 |只看该作者
anonymous0502 发表于 2012-06-14 12:21
我觉得这种情况用多线程可能快不起来吧,python用多进程可能还行,处理起来可能也比较复杂,但是不知道能快 ...


感谢你的回复,如果把一个大文件,分块然后用线程处理,我觉得应会快 。

这个例子,我已经看过了。读读了,但是 我复制处理 执行的时候 提示我语法错误。。

curPosition = endPosition = (startPosition + self.res.blockSize) if (startPosition + self.res.blockSize) < self.res.fileSize else self.res.fileSize

就是这段话中

由于刚接触python不久,不太明白。。。

论坛徽章:
0
4 [报告]
发表于 2012-06-14 12:54 |只看该作者
这种貌似是io密集型的,可能如你所想吧,没有亲自试过不知道实际表现如何。
我自己有个cpu密集型的程序,我以前用的多线程方式,我现在已经改成多进程了,处理速度提高了百分之二三十。当然因为我自己的机器是双核cpu,如果是单核的估计就没什么效果了。
这有个例子是多进程的,代码也较少:
http://www.ngcrawford.com/2012/0 ... essing-large-files/

之前那个例子内容较多,暂时还没时间研究

论坛徽章:
1
水瓶座
日期:2013-11-04 13:16:13
5 [报告]
发表于 2012-06-15 10:29 |只看该作者
回复 3# xiaoqi8866
这个应该类似于三目操作~ 不知道跟python版本有关系没?

   

论坛徽章:
0
6 [报告]
发表于 2012-06-15 11:18 |只看该作者
本帖最后由 anonymous0502 于 2012-06-15 11:19 编辑

python2/3都可以执行
  1. >>> v1= 1 if 10<20 else 2
  2. >>> print v1
  3. 1
  4. >>> v1= 1 if 10>20 else 2
  5. >>> print v1
  6. 2
复制代码
  1. >>> v1= 1 if 10<20 else 2
  2. >>> print(v1)
  3. 1
  4. >>> v1= 1 if 10>20 else 2
  5. >>> print(v1)
  6. 2
复制代码

论坛徽章:
0
7 [报告]
发表于 2012-06-15 14:52 |只看该作者
那个例子python2.x下可以运行了的,结果好像也是对的吧,只是python3下会报错,想了好一会还是没明白为什么python3下运行会报错。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP