【问题标题】:Printing in thread not working for python 3在线程中打印不适用于 python 3
【发布时间】:2017-06-06 18:15:09
【问题描述】:

由于某种原因,我一直无法使用 python 3 创建一个简单的线程,下面的代码会打印一次“test”,然后让程序运行而不再打印任何行。

import time, threading

def test():
    print("test")
    threading.Timer(1, test).start()

test()

此代码似乎适用于数百万其他人,但不适用于我。

我不确定这只是打印失败还是线程根本没有运行。我已经找到并尝试了几十个类似上面的例子,但它们都给了我同样的问题(time.sleep() 也有同样的问题)。我想我可能必须在开始新线程之前取消线程,但事实证明这在循环期间有点困难,我什至不确定这是否会奏效。

【问题讨论】:

  • 您是否尝试再次卸载并安装python?哪个版本?我在 windows 中尝试了 python 3.6.1 并且工作得很好。哪个OP?
  • 我在两台安装了 3.6.1 版本的单独计算机上尝试了这段代码,它只打印一次测试,这会为你打印多行吗?
  • 是的,确实如此……黑魔法?我不这么认为......必须是可计算的解释

标签: python multithreading python-3.x timer


【解决方案1】:

我找到了我的问题的解决方案,我使用的是 git bash,显然它在循环打印它们时不显示值,所以它只会在第一次调用函数时打印。使用 windows CMD 可以正常工作。

【讨论】:

  • 为什么是“显然”?我可以做些什么来支持 git bash?
  • @Moon 我不认为你可以做任何事情来支持它。
  • 我后来发现我需要做的就是用flush打印。 print("xx", flush=True)。在 git bash 中工作。 reference
猜你喜欢
  • 2017-01-10
  • 1970-01-01
  • 1970-01-01
  • 2017-03-14
  • 2018-09-01
  • 1970-01-01
  • 2016-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多