python多线程这样写是否在并发?
本帖最后由 Fujj 于 2023-3-5 17:18 编辑想写一个抢券的多线程,参考了网上的案例,不知道这样写,是否有问题?多线程写的不好,就变成了单线程,有咩有大佬指点一下。。
分别有3张券:coupId1,coupId2,coupId3
getcoup方法是一个死循环,当券抢完的时候才进行break,不然会一致循环请求。
ry:
t1 = threading.Thread(target=getcoup,args=(tokenyh,coupId1))
t2 = threading.Thread(target=getcoup,args=(tokenyh,coupId2))
t3 = threading.Thread(target=getcoup,args=(tokenyh,coupId3))
t1.setDaemon(True)
t2.setDaemon(True)
t3.setDaemon(True)
t1.start()
t2.start()
t3.start()
t1.join(30)
t2.join(30)
t3.join(30)
except:
print ("Error: 无法启动线程")
.join(30)方法是想让线程运行30秒后自动结束,意思就是抢30秒,不管抢不抢的到,30秒后都结束,这个jion的用法也不知道理解的对不对。 你可以把getcoup方法替换成一个死循环输出函数试一下,传入不同的参数看看三个线程里边的函数是否可以同时输出。 学习一下 MengYiKeNan 发表于 2023-3-5 18:03
你可以把getcoup方法替换成一个死循环输出函数试一下,传入不同的参数看看三个线程里边的函数是否可以同时 ...
打印出来是没问题的,但是我不是很理解jion的逻辑 某小程序抢某针 有人能00秒抢到 有滑动验证 这样写不就是单线程了嘛,t3等t2 30s,t2等t1 30s,要并发且需要等待的话简单的不要join,并且可以在getcoup这个方法去写判断。 开启守护线程,同时join设置数值时,超时未处理完毕的子线程将被直接终止
页:
[1]