代码求教

代码求教

怎样实现下面这段代码,一边print,一边写入文件?(想过用读取写入文件的方法,但想到如果需获取的邮件数特别大,不停的读写关闭文件,对硬盘来说,来不可想像了)

[Copy to clipboard] [ - ]
CODE:
#mail.py
#!/usr/bin/env python

import poplib, getpass, string, sys, pickle

host = raw_input("the hostname:")
if (len(host)) == 0:
        host = 'your host name'
        username = 'your username'
        password = 'your password'
else:
        username = raw_input("your username:")
        password = getpass.getpass()


try:
        sess = poplib.POP3(host)
        sess.user(username)
        sess.pass_(password)
except:
        print "0^0,there is an error in open connection"
        sys.exit()

nMess = sess.stat()[0]
headers = []
for i in range(1,nMess+1):
        print
        mesg = sess.top(i,0)
        print i, mesg[0]
        for j in range(len(mesg[1])):
                if mesg[1][j][0:5] == 'From:' or mesg[1][j][0:5] == 'Date:':
                        print mesg[1][j]
                        headers.append(mesg[1][j])

if nMess>0:
        print "received %i message total"%(nMess)
        d01 = open("From_dizhi.txt", 'w')
        pickle.dump(headers, d01)
        d01.close()
else:
        print "Nop ,no mail on", host, "for", username

        sess.quit()

用两个进程吧,一个pint一个写文件,另外不用担心频繁操作硬盘的问题,写的时候打开,写完关闭就可以了.你不可能每秒都有100封邮件吧.
感觉还是用两个线程方便
我把后面这一段改成这样的:
nMess = sess.stat()[0]
headers = []
d01= open("From_dizhi.txt", 'w')
for i in range(1,nMess+1):
        print
        mesg = sess.top(i,0)
        print i, mesg[0]
        for j in range(len(mesg[1])):
                if mesg[1][j][0:5] == 'From:' or mesg[1][j][0:5] == 'Date:':
                        print mesg[1][j]
                        pickle.dump(mesg[1][j], d01)

d01.close()
if nMess>0:
        print "received %i message total"%(nMess)
else:
        print "Nop ,no mail on", host, "for", username
sess.quit()

这样能够实现一般print,一边写入。
至于二个线程的问题,不是很明白,还望解释解释一二。
想复杂了,我是想一个线程 print将值写到Queue中,另一个线程从队列中取值写入文件。这样即使写入文件比较慢,print也可以及时输出?
初学,看不懂