python Thread使用方法:主线程起子线程,无法回到主线程逻辑了

今天同事问了一个Python的Thread使用问题,他的程序起了一个多线程,确一直没能进到主进程,
我看了一眼代码发现问题了
下面看下他的原代码:当然是为了方便表述问题已经简化了业务逻辑

具体有问题的代码

from threading import Thread
import time

def fff(a):
	#业务逻辑这里是消费一个kafka,正常不会结束,相当于一直卡在sleep这里,到不了print('after',5,a)
    print(a)
    time.sleep(5)
    print('after',5,a)
    
a='aaaa'
t1 = Thread(target=fff(a))
t1.start()
print('after')

>>>
aaaa
after 5 aaaa
after

正确代码

看到这里,就知道是Python多线程用发不对,正确用法如下:

from threading import Thread
import time
def fff(a):
    print(a)
    time.sleep(5)
    print('after',5,a)
    
a='aaaa'
t1 = Thread(target=fff,args=(a,))
t1.start()
print('after')
>>>
aaaaafter

after 5 aaaa

总结:

Python的多线程Thread相关类初始化的输入的参数target=后是具体的方法名,而不是方法的返回结果
如果需要参数通过args=来传递
kv类型的参数通过kwargs=的字典类型传入

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值