关于python多线程 threading模块Thread类实例化对象的问题
fromthreadingimportThreadimporttimedeffunc(i):time.sleep(2)print(i)foriinrange(10):th...
from threading import Threadimport timedef func(i): time.sleep(2) print(i)for i in range(10): thr = Thread(target=func,args=(i,)) thr.start()这样打印出来输出有时会黏在一起,怎么解决,
展开
1个回答
展开全部
单独给print(i)写一个锁lock.,确保同时只有一个print可以输出到换行完毕..
lock=threading.Lock()
def func(i):
time.sleep(2)
lock.acquire()
print(i)
lock.release()
更多追问追答
追问
这个就相当于不是并发,那还不如不写线程。。甚至可以在主线程里变量thr定义后写个time.sleep(0.00000001)都可以。。
追答
加锁后也是并发,只是在打印时确保了打印字母
标准输出打印本来就是一种序列化的过程,你先搞清楚你要效果和并行的关系吧。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询