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

时间:2014-03-05 13:55:25

标签: python file-io

我有一个奇怪的情况:我继承了一个项目,它有许多Python进程同时运行各种各样的东西。这些过程彼此独立地分开;不涉及多处理/线程。

我想添加一些功能,当某些事件发生时,它们会写入单行文本文件并进行单行更新,然后我可以稍后解析(可能在单独的服务器上)来收集统计信息。

我正在寻找一种方法将此行附加到文件中,如果其他进程之一试图同时执行相同的操作,则不会导致问题。如果可能的话,我不想在堆栈中添加任何其他软件。

建议?

4 个答案:

答案 0 :(得分:4)

听起来您可能想尝试使用file lock

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

答案 1 :(得分:1)

使用队列http://docs.python.org/2/library/multiprocessing.html#multiprocessing.Queue。您的所有进程都可以将数据放入队列,其中一个进程获取数据并写入文件。

答案 2 :(得分:0)

具有单个文件写入过程,并让其他文件队列消息以供其写入。这可以通过事件提升,消息队列,pyro,发布,您的选择!

答案 3 :(得分:0)

logging模块在​​设计上是线程安全的,它位于标准库中,可以写入文件。