【发布时间】:2018-08-26 01:14:01
【问题描述】:
我写了如下代码来了解非阻塞写是如何操作的:
import os, time
def takeAnap():
print('I am sleeping a bit while it is writing!')
time.sleep(50)
fd = os.open('t.txt', os.O_CREAT | os.O_NONBLOCK)
for i in range(100):
# Non-blocking write
fd = os.open('t.txt', os.O_APPEND | os.O_WRONLY | os.O_NONBLOCK)
os.write(fd, str(i))
os.close(fd)
time.sleep(2)
takeAnap()
如您所见,我正在创建takeAnap(),以便在处理循环时激活,这样我就可以说服自己,写入是在没有阻塞的情况下执行的!然而,循环仍然阻塞并且直到完成才执行该方法。我不确定我的理解是否错误,但据我所知,非阻塞操作允许您在处理写作时执行其他任务。那是对的吗?如果是这样,请问我的代码中的问题在哪里!
谢谢。
【问题讨论】:
标签: python file asynchronous io nonblocking