python 多线程请求带参数的多个接口
对于进程/线程/携程/异步的内容 有时间准备写写了 真的一直用for去循环慢到怀疑人生 需要运用的场景也会很多 所以分开一点点总结一下
先上代码看一下内容,多线程请求接口
imoprt threading
class BrushGifts:
def giftt(self, uid, recvUid, giftId):
"""
送礼接口
:param uid: 送礼用户
:param recvUid: 收礼用户
:param giftId: 礼物道具id
:return:
"""
VoiceRoom().send_gift_room_one(uid, recvUid, giftId)
def giftt_a(self, uid, recvUid, giftId):
VoiceRoom().send_gift_room_one(recvUid, uid, giftId)
if __name__ == '__main__':
uid_list = YamlHandler(YamlThePath().voice_room_cpNew).get_uid_list(10)
rUid_list = YamlHandler(YamlThePath().number_old).get_scope_uid(1500, 10)
for (i, j) in zip(uid_list, rUid_list):
t1 = threading.Thread(target=BrushGifts().giftt, args=(i, j, 51620))
t2 = threading.Thread(target=BrushGifts().giftt, args=(j, i, 51620))
t1.start()
t2.start()
主线程: 主线程的概念就是这个py文件内从头到位的执行 当我执行完最后一行代码t2.start()后 主线程会进入等待状态,等待子线程结束后主线程才会结束 子线程: 子线程的概念就是在主线程执行的过程中我执行到了这里 当然这里是通过t1.start()方法来进行调用的
t1 = threading.Thread(target=BrushGifts().giftt, args=(i, j, 51620))
这时候系统会再开辟出一条子线程进行BrushGifts().giftt方法的执行与调用
主线程在进行的时候会执行t1.start()与t2.start()但是他不会等待他们执行结束,主线程会继续往下,所以t1.start()与t2.start()是同时请求,当t1.start()与t2.start()两个子进程都结束时,主线程才会结束~
因为主线程执行t1.start()与t2.start()是一行一行的执行 而且python无法做到准确意义上的并发 所以如果对数据速度要求很高的时候 此方法不适用
|