我打算经常从许多不同的文件中读写小块信息。以下有点牵强附会的示例展示了使用os
操作直接对文件描述符进行操作时所需时间大大减少。除了文件对象的便利性之外,我是否还错过了其他任何缺点?
import os
import time
N = 10000
PATH = "/tmp/foo.test"
def testOpen():
for i in range(N):
with open(PATH, "wb") as fh:
fh.write("A")
for i in range(N):
with open(PATH, "rb") as fh:
s = fh.read()
def testOsOpen():
for i in range(N):
fd = os.open(PATH, os.O_CREAT | os.O_WRONLY)
try:
os.write(fd, "A")
finally:
os.close(fd)
for i in range(N):
fd = os.open(PATH, os.O_RDONLY)
try:
s = os.read(fd, 1)
finally:
os.close(fd)
if __name__ == "__main__":
for fn in testOpen, testOsOpen:
start = time.time()
fn()
print fn.func_name, "took", time.time() - start
示例运行:
$ python bench.py
testOpen took 1.82302999496
testOsOpen took 0.436559915543