【问题标题】:SublimeText bug in order of execution involving time.sleep in PythonSublimeText 的执行顺序错误,涉及 Python 中的 time.sleep
【发布时间】:2017-08-05 13:09:20
【问题描述】:

考虑以下python代码:

import time
time.sleep(5)
print("WOT!")
time.sleep(5)
#... 50 similar lines
time.sleep(5)

我在 Sublime 2 中使用标准 python 构建运行它。 你期望会发生什么? 该程序在所有 time.sleep() 的整个持续时间内都处于休眠状态,然后才打印“WOT!”。 所以似乎不知何故,所有这些让线程休眠的语句都在 print 语句之前执行,但只有在 Sublime Text 中运行时才执行。 例如,如果我输入以下代码:

while True:
    print("Hello world!")
    time.sleep(5)

sublime 中的输出窗口不会输出任何内容。

有人可以确认他们遇到了同样的问题,并提出解决方案吗?

【问题讨论】:

  • 我的运行良好。您能否提及您运行脚本所采取的步骤?
  • 这个问题的一个可能原因是程序的输出被缓冲了,并且由于 Sublime 显示的输出实际上是发送到stdout,所以你只有在全部完成后才能看到输出. (或者在第二种情况下,它已经运行了足够长的时间来填充缓冲区)。如果是这种情况,在睡眠之前添加 sys,stdout.flush() 这样简单的操作应该可以解决问题(或使用无缓冲输出)。

标签: python multithreading debugging sublimetext2


【解决方案1】:

我遇到了同样的问题并解决了 问题是您在崇高文本中创建的 {file}.sublime-build 他们应该是这样的 在这种情况下,我使用 python3.7,我的文件名是 python3.7.sublime-build 在你的 sublimetext>Tools>Build System>New Build System

{
   "cmd": ["{PATH_TO_YOUR_PYTHON}/python3.7", "-i", "-u", "$file"],
   "selector": "source.python",
   "file_regex": "file \"(...*?)\", line([0-9]+)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多