线程打印不正确
Thread is not printing properly
我似乎无法使多线程工作。
我简化了我的问题,但我仍然无法正确打印我的线程(所以我猜它们没有正确执行)。
import time, threading
s_print_lock = threading.Lock()
def s_print(*a, **b):
with s_print_lock:
print(*a, **b)
# Thread safe print function
def a():
while True:
s_print('\'a\' is running')
time.sleep(5)
# Thread 1
def b():
while True:
s_print('\'b\' is running')
time.sleep(5)
# Thread 2
if __name__ == "__main__":
t1 = threading.Thread(target=a())
t2 = threading.Thread(target=b())
t1.start()
t2.start()
输出为:
'a' is running
'a' is running
'a' is running
'a' is running
...
目标必须是可调用的。您正在 执行 a()
所以它进入 while True
循环并且永无止境,因此永远不会启动线程。试试这个:
if __name__ == "__main__":
t1 = threading.Thread(target=a)
t2 = threading.Thread(target=b)
t1.start()
t2.start()
我似乎无法使多线程工作。 我简化了我的问题,但我仍然无法正确打印我的线程(所以我猜它们没有正确执行)。
import time, threading
s_print_lock = threading.Lock()
def s_print(*a, **b):
with s_print_lock:
print(*a, **b)
# Thread safe print function
def a():
while True:
s_print('\'a\' is running')
time.sleep(5)
# Thread 1
def b():
while True:
s_print('\'b\' is running')
time.sleep(5)
# Thread 2
if __name__ == "__main__":
t1 = threading.Thread(target=a())
t2 = threading.Thread(target=b())
t1.start()
t2.start()
输出为:
'a' is running
'a' is running
'a' is running
'a' is running
...
目标必须是可调用的。您正在 执行 a()
所以它进入 while True
循环并且永无止境,因此永远不会启动线程。试试这个:
if __name__ == "__main__":
t1 = threading.Thread(target=a)
t2 = threading.Thread(target=b)
t1.start()
t2.start()