Ray*_*y Y 24 python concurrency simultaneous text-files simultaneous-calls
我正在研究一个可以通过网络访问的python脚本,因此会有多个用户试图同时附加到同一个文件.我担心这可能导致竞争条件,如果多个用户同时写入同一文件,它可能会损坏文件.
例如:
#!/usr/bin/env python
g = open("/somepath/somefile.txt", "a")
new_entry = "foobar"
g.write(new_entry)
g.close
Run Code Online (Sandbox Code Playgroud)
我是否必须使用锁定文件,因为此操作看起来很危险.
phi*_*hag 33
您可以使用文件锁定:
import fcntl
new_entry = "foobar"
with open("/somepath/somefile.txt", "a") as g:
fcntl.flock(g, fcntl.LOCK_EX)
g.write(new_entry)
fcntl.flock(g, fcntl.LOCK_UN)
Run Code Online (Sandbox Code Playgroud)
请注意,在某些系统上,则锁定不需要,如果你只写小的缓冲区,因为附加在这些系统上是原子.
| 归档时间: |
|
| 查看次数: |
16064 次 |
| 最近记录: |