from bilibili_api import live, sync
room = live.LiveDanmaku(2xxxx)
@room.on('SEND_GIFT')
async def on_gift1(event):
礼物名=event['data']['data']['giftName']
送礼人=event['data']['data']['uname']
礼物数 = event['data']['data']['num']
print(……)
sync(room.connect())
具体要求:
1收到礼物后观察n秒,假如n秒内没有收到同一用户的礼物,就print()
2如果在观察的时候再次收到该用户礼物,则重置观察时间(再观察n秒),循环直到执行1
3不同用户的礼物互不干扰,每位用户的观察时间独立
4同一用户多个礼物可以合并一起输出
举例
print:谢谢熱血赠送的2个辣条、1个PK票
思考:
1while循环:浪费资源,堵住线程
2新建线程:目标3可能会有问题
3批量创建线程,一位用户一个线程去观察:不会……没找到代码实现方法
最好有清晰一点的思路,还有实现方法。上面的这个思路我搜了半天没搜到实现的办法。
确实,提问了根本没有任何用,,浪费钱
首先,题主如果用python,需要考虑当前操作是否为CPU密集型还是IO密集型,因为python是假线程,有GIL锁,所以线程处理能力会打折扣。但我看说明,基本是偏向于网络IO,所以可以暂时不考虑这个问题,但线程不是越多越好,在操作系统的调度上,一个进程里,线程的切换虽然也有资源开销比进程小,但是越多,等待时间也就越长,所以这里建议使用线程池,或者直接用协程会更好,线程池的案例可以看如下链接,跟你描述的操作挺像的: