[英]How to run infinite loops within threading in python
我到处都看过了, 似乎我编写的线程应该工作了。 我已经检查了许多其他有关它的线程和教程。 我似乎无法在线程中运行无限循环。 尽管我做了什么,但只有第一个线程可以工作/打印。
这是方法的代码。
import threading
def thread1():
while True:
print("abc")
def thread2():
while True:
print ("123")
if __name__ == "__main__":
t1 = threading.Thread(target=thread1())
t2 = threading.Thread(target=thread2())
t1.start
t2.start
t1.join
t2.join
在使用target=
调用函数结束时删除假义,不会打印任何内容,因此我将其保留在那里。
这是类/对象版本。
from threading import Thread
class Thread1(Thread):
def __init__(self):
Thread.__init__(self)
self.daemon = True
self.start
def run():
while True:
print ("abc")
class Thread2(Thread):
def __init__(self):
Thread.__init__(self)
self.daemon = True
self.start
def run():
while True:
print ("123")
Thread1.run()
Thread2.run()
两者都从来没有打印123
,我不知道为什么。 看起来无限循环不应该成为问题,因为它们是并行运行的。 我尝试了time.sleep
(可能是GIL停止了它的idk),所以线程2可以在线程1空闲时运行。 没用
对于第一个示例:
if __name__ == "__main__":
t1 = threading.Thread(target=thread1)
t2 = threading.Thread(target=thread2)
t1.start()
t2.start()
t1.join()
t2.join()
将函数而不是调用函数的结果传递给threading.Thread
作为其target
。
对于本节示例。 不要打电话给run
。 呼叫start
。 创建实例后。
from threading import Thread
class Thread1(Thread):
def __init__(self):
Thread.__init__(self)
self.daemon = True
def run():
while True:
print ("abc")
class Thread2(Thread):
def __init__(self):
Thread.__init__(self)
self.daemon = True
def run():
while True:
print ("123")
Thread1().start()
Thread2().start()
您的括号在第一个版本中的位置错误。
如当前所写,您正在创建t1
时传递调用thread1
的结果; 由于该调用永远不会返回,因此您实际上不会创建线程。 因此,您需要删除那些括号。
但是您没有在试图调用start
和join
方法的地方加上括号,因此即使您在创建线程时没有使用多余的括号,也不会真正启动线程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.