executor.submit(buy)和executor.submit(buy())有什么区别

executor.submit(buy)和executor.submit(buy())有什么区别

试了一下buy后面加括号和不加括号。控制台输出内容不一样。不加括号的时候不会打印秒杀结束,并且会打印很多Too many connections。加了括号只会打印秒杀结束。这是为什么呢?http://img1.sycdn.imooc.com//climg/5efe3b86099a9a6c10150629.jpghttp://img1.sycdn.imooc.com//climg/5efe3ba509d7dbcd11000730.jpg   

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕美 2020-07-03 13:33:38

同学,你好。

1、buy和buy():buy是函数的引用, buy()是调用buy函数

2、submit():传入的第一个参数应为需要执行函数的函数名,而不是函数调用。

3、Too many connection是连接太多了,导致Redis连接不上。同学可以看下Redis数据库中的字段kill_user为50条记录和kill_num值为50即表示秒杀是成功的。关于提示信息可在捕获异常后不进行打印输出。

http://img1.sycdn.imooc.com//climg/5efead55099ccf2806490295.jpg

如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~

  • 提问者 慕粉1504263447 #1
    为什么用buy()输出了最后一行代码打印的内容,用buy就没有输出,跟视频老师演示的不一样。
    2020-07-03 13:38:44
  • 好帮手慕美 回复 提问者 慕粉1504263447 #2
    同学,你好。同学可以将max_connections最大连接数设置为200,与创建的线程数量一致即可。若参数的值设置的过小,则会提示too many connections,祝学习愉快~~~~
    2020-07-03 15:48:47
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师