繁体   English   中英

多个线程可以同时写入CSV文件的同一行,但同时写入diff列吗?

[英]Can multiple threads write to same row of a csv file but diff columns at same time?

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

第一秒:

T1将写入row2col1

T2将写入row2col2

T3将写入row2col3

T4将写入row2col4

再次,

第二秒:

T1将写入row3col1

T2将写入row3col2

T3将写入row3col3

T4将写入row3col4

所有线程可以同时或通过并发队列写入文件。 这在python多线程中可能吗?

注意:所有4个线程都在后台作为守护程序运行。

您可以使用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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM