python多线程互斥锁没法一行打印

小黄鸭zm 2019-03-21 02:56:57
求教一个python的多线程互斥锁的问题,就是我想要打印abcabcabc.....我写了三个线程,但是我不能一行输出。三个线程,总是需要有一个输出换行。

import threading
import time
def showa():
while True:
lockc.acquire()
print('a',end='')
locka.release()
time.sleep(0.1)
def showb():
while True:
locka.acquire()
print('b',end='')
lockb.release()
time.sleep(0.1)
def showc():
while True:
lockb.acquire()
print('c',end='\n')
lockc.release()
time.sleep(0.1)
if __name__=='__main__':
locka=threading.Lock()
lockb=threading.Lock()
lockc=threading.Lock()

t1=threading.Thread(target=showa)
t2=threading.Thread(target=showb)
t3=threading.Thread(target=showc)

locka.acquire()
lockb.acquire()

t1.start()
t2.start()
t3.start()


不能写成print('c',end=''),就是一定需要换行
...全文
98 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
小黄鸭zm 2019-03-21
  • 打赏
  • 举报
回复
引用 5 楼 ruancan的回复:
还有这种事?我这里跑起来没有问题啊,看代码也没有问题,你是如何执行的?
有缓存区的问题,去掉sleep就可以了
ruancan 2019-03-21
  • 打赏
  • 举报
回复
还有这种事?我这里跑起来没有问题啊,看代码也没有问题,你是如何执行的?
小黄鸭zm 2019-03-21
  • 打赏
  • 举报
回复
引用 3 楼 ruancan的回复:
[quote=引用 2 楼 xiaolangmin 的回复:] [quote=引用 1 楼 ruancan的回复:]我看你的代码跑出来的结果就是 abc abc abc abc ...
为什么没办法一行打印啊,如果要一行打印,python的多线程怎么实现啊[/quote] 如果要一行打印,那你不换行就行了啊 print('c',end='\n')修改成print('c',end='')[/quote] 修改之后就锁住了,只能打印一组abc
ruancan 2019-03-21
  • 打赏
  • 举报
回复
引用 2 楼 xiaolangmin 的回复:
[quote=引用 1 楼 ruancan的回复:]我看你的代码跑出来的结果就是 abc abc abc abc ...
为什么没办法一行打印啊,如果要一行打印,python的多线程怎么实现啊[/quote] 如果要一行打印,那你不换行就行了啊 print('c',end='\n')修改成print('c',end='')
小黄鸭zm 2019-03-21
  • 打赏
  • 举报
回复
引用 1 楼 ruancan的回复:
我看你的代码跑出来的结果就是 abc abc abc abc ...
为什么没办法一行打印啊,如果要一行打印,python的多线程怎么实现啊
ruancan 2019-03-21
  • 打赏
  • 举报
回复
我看你的代码跑出来的结果就是 abc abc abc abc ...

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧