Fujj 发表于 2023-3-5 17:15

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的用法也不知道理解的对不对。

MengYiKeNan 发表于 2023-3-5 18:03

你可以把getcoup方法替换成一个死循环输出函数试一下,传入不同的参数看看三个线程里边的函数是否可以同时输出。

lianzai 发表于 2023-3-5 19:53

学习一下

Fujj 发表于 2023-3-5 20:47

MengYiKeNan 发表于 2023-3-5 18:03
你可以把getcoup方法替换成一个死循环输出函数试一下,传入不同的参数看看三个线程里边的函数是否可以同时 ...

打印出来是没问题的,但是我不是很理解jion的逻辑

wxy9527 发表于 2023-3-5 21:34

某小程序抢某针 有人能00秒抢到 有滑动验证

w759003376 发表于 2023-3-5 21:57

这样写不就是单线程了嘛,t3等t2 30s,t2等t1 30s,要并发且需要等待的话简单的不要join,并且可以在getcoup这个方法去写判断。

bj201809 发表于 2023-3-5 21:59

开启守护线程,同时join设置数值时,超时未处理完毕的子线程将被直接终止
页: [1]
查看完整版本: python多线程这样写是否在并发?