在Python中写入txt文件的最快方法
我遇到一个奇怪的情况:我接手了一个项目,这个项目里有几个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