将多线程输出保存到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文件的主要内容,如果未能解决你的问题,请参考以下文章

文件输出到记事本 .txt

python entry 用户输入的内容保存到txt文件内

python输出1000以内的素数保存到txt文件

Vs2015写完一个C++程序后点保存,有时候会弹出保存“输出—生成”.txt文件有时候却不会,这

matlab输出有字符和数据的单元数组到txt文件

如何把一个java数据保存到txt里面