将多线程输出保存到txt文件
Posted
技术标签:
【中文标题】将多线程输出保存到txt文件【英文标题】:save multi thread output to txt file 【发布时间】:2018-11-26 09:09:24 【问题描述】:我编写了这个简单的代码...我需要将代码输出保存到我的电脑中的文本文件中,我该怎么做?
import threading
import time
def qan(hey):
while True:
d = hey + 1
print d
time.sleep(1)
def printd(printme):
while True:
print printme + "\n"
time.sleep(1)
t1 = threading.Thread(target=qan, args=(1,))
t2 = threading.Thread(target=printd, args=("hey",))
t2.start()
t1.start()
这是我的代码输出
嘿
2 2 嘿
2嘿
2
【问题讨论】:
many threads to write log file at same time python的可能重复 【参考方案1】:对数据使用一些缓冲区:
import threading
import time
buffer = []
def qan(hey):
while True:
d = hey + 1
buffer.append(d)
time.sleep(1)
def printd(printme):
while True:
buffer.append(printme + "\n")
time.sleep(1)
t1 = threading.Thread(target=qan, args=(1,))
t2 = threading.Thread(target=printd, args=("hey",))
t2.start()
t1.start()
with open('output.txt') as f:
f.write(''.join(buffer))
【讨论】:
它现在可以工作了,我修改代码后出现错误:with open('output.txt', "a") as f: f.write('\n'.join(str(缓冲区))) 输出:['hey\n', 2] just oneline !! 将第一个 buffer.append 重写为 buffer.append(str(d) + '\n') 首先,python 中的 print 使用 '\n' 打印字符串,而 join 方法仅适用于列表字符串以上是关于将多线程输出保存到txt文件的主要内容,如果未能解决你的问题,请参考以下文章