在Python中写入txt文件的最快方法

2 投票
4 回答
658 浏览
提问于 2025-04-17 20:56

我遇到一个奇怪的情况:我接手了一个项目,这个项目里有几个Python进程同时在运行,做着不同的事情。这些进程是独立启动的,没有使用多进程或多线程。

我想增加一个功能,让它们在某些事件发生时,向一个文本文件里写入一行更新,这样我可以在很久之后(可能是在另一台服务器上)解析这些数据,收集一些统计信息。

我在寻找一种方法,可以把这一行追加到文件中,而不会因为其他进程同时也在尝试写入而出现问题。如果可以的话,我不想在现有的系统中添加其他软件。

有什么建议吗?

4 个回答

0

logging模块是专门设计来安全地在多个线程中使用的,它是Python的标准库之一,可以用来写入文件。

0

有一个单独的文件写入过程,其他的程序会把消息排队等着它来写。这可以通过触发事件、消息队列、pyro、发布等方式来实现,具体方法可以根据你的选择来定!

1

使用队列,具体可以参考这个链接:http://docs.python.org/2/library/multiprocessing.html#multiprocessing.Queue。你所有的进程都可以把数据放到这个队列里,然后其中一个进程可以从队列中取出数据并写入文件。

4

听起来你可能想试试使用一个 文件锁

lock = FileLock("/some/file/or/other")
while not lock.i_am_locking():
    try:
        lock.acquire(timeout=60)    # wait up to 60 seconds
    except LockTimeout:
        lock.break_lock()
        lock.acquire()
print "I locked", lock.path
lock.release()

http://pythonhosted.org/lockfile/lockfile.html#filelock-objects

撰写回答