【问题标题】:multithreading using python使用python进行多线程
【发布时间】:2015-11-30 19:18:59
【问题描述】:

在 python 中使用多线程时尝试理解以下结果。以下代码以随机顺序将 A 和 B 打印到控制台,这是我想要实现的。但是第二段代码只将“A”打印到控制台,并且永远不会超过 t1.start()。为什么是这样?我需要做什么才能使第二部分代码的行为与第一部分一样?

提前致谢,这是我的第一篇文章。

这是我想要的行为:

from threading import Thread
def runA():
    while True:
        print ('A\n')

def runB():
    while True:
        print ('B\n')

if __name__ == "__main__":
     t1 = Thread(target = runA())
     t2 = Thread(target = runB())
     t1.setDaemon(True)
     t2.setDaemon(True)
     t1.start()
     t2.start()
     while True:
         pass

我想要从上面的代码产生的行为,但使用下面示例中的类。下面的代码从不执行 t2.start()。这是为什么呢?

from threading import Thread
class test():
     def runA(self):
         while True:
             print ('A\n')

     def runB(self):
         while True:
             print ('B\n')

if __name__ == "__main__":
     testingNow=test()
     t1 = Thread(target = testingNow.runA())
     t2 = Thread(target = testingNow.runB())
     t1.setDaemon(True)
     t2.setDaemon(True)
     t1.start()
     t2.start()
     while True:
         pass

【问题讨论】:

  • 您确定第一个代码 sn-p 确实符合您的要求吗?我认为当您将代码重新输入问题框时,您从第二个 sn-p 中引入了相同的错误。

标签: python multithreading python-multithreading python-multiprocessing


【解决方案1】:

去掉testingNow.runA()testingNow.runB()中的()

【讨论】:

  • 就是这样!我是 python 新手,没有意识到这有什么不同!谢谢!
猜你喜欢
  • 2016-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2015-09-26
相关资源
最近更新 更多