gpt4 book ai didi

python - 防止Python脚本中的写入中断

转载 作者:行者123 更新时间:2023-12-01 05:02:07 25 4
gpt4 key购买 nike

我正在用 Python 编写一个解析器,它将一堆数据库行输出到标准输出。为了让数据库正确处理它们,每一行都需要完整地打印到控制台。我试图防止中断使打印命令在打印一行的过程中停止。

我尝试了建议使用信号处理程序覆盖的the solution,但这仍然无法阻止程序中断时部分打印该行。 (我认为WRITE系统调用被取消来处理中断)。

以为问题已经被issue 10956解决了,但是我升级到Python 2.7.5,问题仍然发生。

您可以通过运行此示例来亲自查看:

# Writer
import signal
interrupted = False
def signal_handler(signal, frame):
global interrupted
iterrupted = True

signal.signal(signal.SIGINT, signal_handler)
while True:
if interrupted:
break
print '0123456789'

在终端中:

$ mkfifo --mode=0666 pipe
$ python writer.py > pipe

在另一个终端中:

$ cat pipe

然后按 Ctrl+C 打开第一个终端。有时,第二个终端将以不完整的字符序列结束。

有什么方法可以确保写满行吗?

最佳答案

这看起来不像是中断问题本身,而是缓冲问题。如果我对您的代码进行一个小更改,我就不会得到部分行。

# Writer
import sys

while True:
print '0123456789'
sys.stdout.flush()

关于python - 防止Python脚本中的写入中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25859227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com