多线程中print输出结果的及时性

为了看多线程的执行情况,用print输出一些信息。

#多线程演示
#
#

import threading
import time

print('start of program.')

def takeANap():
    time.sleep(5)
    print('wake up!', flush=True)  #没有 flush=True 将会导致所有线程执行完毕,才一起显示打印信息


def takeANap2(arg2):
    time.sleep(1)
    print('wake up!', arg2, flush=True) #没有 flush=True 将会导致所有线程执行完毕,才一起显示打印信息

def takeANap3(*arg3):
    time.sleep(8)
    print('wake up!', ' & '.join(arg3), flush=True) #没有 flush=True 将会导致所有线程执行完毕,才一起显示打印信息


threadObj=threading.Thread(target=takeANap)
threadObj.start()

threadObj2=threading.Thread(target=takeANap2, args=[' Mr. Superman.',])
threadObj2.start()

threadObj3=threading.Thread(target=takeANap3, args=[' Mr. Superman', 'Mr. Tang SanZang',])
threadObj3.start()


print('end of program')

 

如果需要在所有进程执行完再允许后续的语句,可以参考:

#多线程演示
#
#

import threading
import time

print('start of program.')

def takeANap():
    time.sleep(5)
    print('wake up!', flush=True)  #没有 flush=True 将会导致所有线程执行完毕,才一起显示打印信息


def takeANap2(arg2):
    time.sleep(1)
    print('wake up!', arg2, flush=True) #没有 flush=True 将会导致所有线程执行完毕,才一起显示打印信息

def takeANap3(*arg3):
    time.sleep(8)
    print('wake up!', ' & '.join(arg3), flush=True) #没有 flush=True 将会导致所有线程执行完毕,才一起显示打印信息

#list for test purpose
threadObjs=[]

#individuals.
threadObj=threading.Thread(target=takeANap)
threadObjs.append(threadObj)

threadObj2=threading.Thread(target=takeANap2, args=[' Mr. Superman.',])
threadObjs.append(threadObj2)

threadObj3=threading.Thread(target=takeANap3, args=[' Mr. Superman', 'Mr. Tang SanZang',])
threadObjs.append(threadObj3)

print('end of program -- 1st round.', flush=True)


print('threadObjs:', threadObjs, flush=True)

for threadO in threadObjs:
    threadO.start()
    threadO.join()
print('end of program -- 2nd round.', flush=True)

 

##上述两个测试,不能合并在一个小程序中用相同的thread名称运行: “thread只能执行一次”。(学习中,不知道是否有其它办法可以多次运行,是否值得。)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值