【问题标题】:File is locked by Python debugger文件被 Python 调试器锁定
【发布时间】:2014-06-02 05:37:39
【问题描述】:

我在理解 Python 调试器中奇怪的文件锁定行为时遇到了问题。

我有一个 2TB 的图像文件,我的脚本会读取该文件。一切都很完美,直到我想用不同的十六进制编辑器读取同一个文件。如果在我开始我的脚本之前在十六进制编辑器中打开文件,一切都很好。如果我在脚本在断点处暂停期间尝试打开文件,我的系统几乎挂起并且变得非常慢。我通常可以从终端杀死 Pyhon 和十六进制编辑器,但速度很慢,最多需要 10 分钟。

在我停止脚本甚至广泛杀死所有 Python 实例之后,同样的问题出现了。此映像所在的磁盘仍处于锁定状态,无法卸载它(仅使用 diskutil force 命令),如果我尝试在其他任何地方打开文件,系统将挂起。

我也不能一个接一个地启动脚本,下一个脚本只是停止工作并挂起我的系统。

我必须等待最多 10 分钟才能再次使用该文件。

我试图找到使用“sudo lsof +D”命令锁定文件的进程,但它没有列出任何内容。

以下是更多详细信息: — 我的系统是 Mac Os X 10.9。 Python是3.4。我使用 Eclipse 和 Pydev 来开发脚本。 — 我使用 open('image.dmg', mode='rb') 命令在 python 中打开文件并使用 close() 关闭它。 — 该文件是外部 ExFat 格式化驱动器上的 2TB 磁盘映像。其他文件没有这样的问题。文件在 Finder 设置中被写保护。

谁能指引我正确的方向来定位这个问题的根源?

【问题讨论】:

    标签: python debugging file-io lsof


    【解决方案1】:

    我从未使用过 Mac OS,但我可以想象:

    • 也许 Python 在打开文件时会锁定文件,如果您之后尝试打开它,十六进制编辑器会失败。
    • 系统挂起并且变慢(即使在杀死所有进程之后)-> 我认为这是某种缓存,它会填满您的内存,直到您的计算机开始使用硬盘作为内存(并且变得非常慢)

    我认为您应该尝试找出如何在 Mac OS 上使用 python 打开文件(如果有某种锁),并且您应该注意这个大文件永远不会完整地存储在内存中(有不同的方法如何以块读取大文件)。

    问候奎师

    PS:我为我的英语道歉。这不是我的母语。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-13
      • 1970-01-01
      • 2011-03-08
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多