多线程的问题
代码如下所示import threading
import time
def sing():
for i in range(3):
print('唱歌.....')
time.sleep(1)
def dance():
for i in range(3):
print('跳舞.....')
time.sleep(1)
sing_thred=threading.Thread(target=sing)
dance_thred=threading.Thread(target=dance)
sing_thred.start()
dance_thred.start()
运行结果如下所示
唱歌.....
跳舞.....
跳舞.....唱歌.....
唱歌.....跳舞.....
想问下各位大佬 为什么第一次执行唱歌跳舞 分开的而第二次循环执行时 唱歌和跳舞却同时打印出来了
如果说两个URL 一个www.baidu.com 一个www.taobao.com是不是也会变成 www.baidu.comwww.taobao.com 请问是什么原因呢 有什么方法可以解决吗 https://blog.csdn.net/LIva_/article/details/122382327 用logger模块代替print输出即可 print不是线程安全的,给print语句加锁即可(我用Python 3.10.5 没有出现你的问题,但是我以前确实遇到过和你一样的问题,不知道是不是改过了)
import threading
import time
locker = threading.Lock()
def sing():
for i in range(3):
locker.acquire()
print("唱歌.....")
locker.release()
time.sleep(1)
def dance():
for i in range(3):
locker.acquire()
print("跳舞.....")
locker.release()
time.sleep(1)
sing_thred = threading.Thread(target=sing)
dance_thred = threading.Thread(target=dance)
sing_thred.start()
dance_thred.start()
页:
[1]