关于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()这样打印出来输出有时会黏在一起,怎么解决, 展开
 我来答
百度网友9308069
2018-10-28 · TA获得超过1万个赞
知道大有可为答主
回答量:3947
采纳率:89%
帮助的人:1910万
展开全部

单独给print(i)写一个锁lock.,确保同时只有一个print可以输出到换行完毕..

lock=threading.Lock()

def func(i):
    time.sleep(2)
    lock.acquire()
    print(i)
    lock.release()
更多追问追答
追问
这个就相当于不是并发,那还不如不写线程。。甚至可以在主线程里变量thr定义后写个time.sleep(0.00000001)都可以。。
追答
加锁后也是并发,只是在打印时确保了打印字母
标准输出打印本来就是一种序列化的过程,你先搞清楚你要效果和并行的关系吧。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式