免费注册 查看新帖 |

Chinaunix

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

请教多线程的readline [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-04-24 16:32 |只看该作者 |倒序浏览
正在学python的多线程。写了个多线程的读取文件。不知道为什么总是有问题。以下是代码:
def readFile(fn):
        time.sleep(1)
        if mutex.acquire():
                line=fn.readline()
                if line:
                        print line
                        mutex.release()
                else:
                        pass
        else:
                pass
       

if __name__ == '__main__':
#        global offset
        offset=0
        global mutex
        mutex=threading.Lock()

        fn=open('/tmp/ttt.txt','rU')
        threads=[]
        for i in range(5):
                t=threading.Thread(target=readFile,args=(fn,))
                threads.append(t)
                t.start()
        fn.close()
        print 'The python script exit.'



最后总得到错误代码
  File "3.py", line 12, in readFile
    line=fn.readline()
ValueError: I/O operation on closed file

这个script的目的是多线程逐行读文件。
我也考虑过在readFile函数中加入offset,但总得不到我想要的结果。
望高手指教。谢谢。

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015年迎新春徽章
日期:2015-03-04 09:57:09
2 [报告]
发表于 2014-04-24 20:10 |只看该作者
多线程读文件的意义是啥?

论坛徽章:
0
3 [报告]
发表于 2014-04-24 22:16 |只看该作者
我写了一个script,在网上摘取了proxy写入一个文件中,现在想多线程来测试这些proxy的速度。得把这些proxy ip逐行读出来,当参数发给下一个函数。

论坛徽章:
11
技术图书徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
4 [报告]
发表于 2014-04-25 10:23 |只看该作者
回复 1# hstking
主线程提前推出了啊,在"fn.close()"前加上:
  1. for t in threads:
  2.     t.join()
复制代码

论坛徽章:
0
5 [报告]
发表于 2014-04-26 11:17 |只看该作者
是这个原因,非常感谢。找了好久都没找到。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP