多个线程可以同时写入csv文件的同一行但不同列吗?

2024-04-18 00:43:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个多线程python程序,其中每个线程将捕获一些数据,并每秒写入csv文件中同一行的一列。例如,如果我的csv有column1,column2,column3,column4作为标题(row1):

第一秒:

T1将写入行2Col1

T2将写入行2Col2

T3将写入行2Col3

T4将写入第2行COL4

再说一遍

第二秒:

T1将写入行3Col1

T2将写入第3行COL2

T3将写入第3行COL3

T4将写入第3行COL4

所有线程可以同时写入文件,也可以通过并发队列写入。这在python多线程中是可能的吗?你知道吗

注意:所有4个线程都作为守护进程在后台运行。你知道吗


Tags: 文件csv数据程序标题线程t1t3
1条回答
网友
1楼 · 发布于 2024-04-18 00:43:10

您可以使用queue。 请尝试以下代码:

import queue
import os
import threading

q = queue.Queue()


def producer():
    for i in range(100):
        q.put(f'{threading.current_thread().name}-{i}')


def consumer():
    with open('out.txt', 'w+') as fp:
        while True:
            item = q.get()
            if item is None:
                break
            fp.write(item + os.linesep)


worker = [threading.Thread(target=producer) for _ in range(2)]
[i.start() for i in worker]

master = threading.Thread(target=consumer)
master.start()

[i.join() for i in worker]
q.put(None)
master.join()

相关问题 更多 >

    热门问题