gpt4 book ai didi

python - 分析 fuse-python

转载 作者:太空宇宙 更新时间:2023-11-03 13:05:14 25 4
gpt4 key购买 nike

我目前正在使用 fuse-python 编写 fuse 。它已经在做它应该做的事了。但是,在安装几周后,它变得非常慢。所以我想介绍一下。我知道可以优化的几点。但这些不应该是罪魁祸首。

但是,fuse-python 在无限循环中挂起(参见 line 733 and 757 of the fuse source )。如果我在 Debug模式下运行 fuse(使用 -d 开关),它将在前台运行。但是,我无法用 SIGINTCTRL+C 停止它(无论如何都是一样的)。

我尝试使用 signal 模块在主线程中捕获信号。但这也不起作用。有趣的是,一旦我用 SIGKILL 终止了进程,我就在 stdout 上看到了 KeyboardInterrupt。此外,在 SIGKILL 之后,信号处理程序按预期执行。

这会对分析产生影响。由于进程永远不会正常终止,cProfile 永远不会有机会保存统计文件。

有什么想法吗?

最佳答案

python installs a handler that raises KeyboardInterrupt on SIGINT .如果在调用 fuse 的 main 时检测到非默认信号处理程序,它将 not replace the handler with its own ,通常调用 fuse_session_exitcleans up .在你调用 fuse 的 main 之后,KeyboardInterruptCFUNCTYPE吞噬包装器,你永远看不到它们。

您的选择是:

  • 发送SIGQUIT通过按 Ctrl+\SIGINT 以外的任何其他终止信号。但是 fuse 不会干净地退出。
  • 在调用 fuse 的 main 之前将默认信号处理程序安装到 SIGINT,并在完成后恢复原始信号处理程序。

old_handler =signal(SIGINT, SIG_DFL)
# call main
signal(SIGINT, old_handler)

我强烈建议您也切换到替代绑定(bind),fuse-python 非常困惑且难以使用。我很幸运 fusepy ,并在那里提交了一些补丁。

当您能够在不使用未捕获信号的情况下终止 FUSE 实例时,Python 探查器将能够按照正常方式保存统计信息。

关于python - 分析 fuse-python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5044375/

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