鱼C论坛

 找回密码
 立即注册
查看: 2412|回复: 1

关于gevent的小问题!求教,谢谢

[复制链接]
发表于 2020-10-20 17:08:57 | 显示全部楼层 |阅读模式
20鱼币
这段是我的代码
  1. import gevent
  2. import time


  3. def f1(n):
  4.     for i in range(n):
  5.         print(gevent.getcurrent(), i)
  6.         gevent.sleep(1)
  7.         print('ooo')

  8. def f2(n):
  9.     for i in range(n):
  10.         print(gevent.getcurrent(), i)
  11.         gevent.sleep(4)
  12.         print('kkk')

  13. def f3(n):
  14.     for i in range(n):
  15.         print(gevent.getcurrent(), i)
  16.         gevent.sleep(0.5)

  17. print("----1---")
  18. g1 = gevent.spawn(f1, 5)
  19. print("----2---")
  20. g2 = gevent.spawn(f2, 5)
  21. print("----3---")
  22. g3 = gevent.spawn(f3, 5)
  23. #print("----4---")
  24. #g1.join()
  25. #g2.join()
  26. #g3.join()

复制代码

我尝试把join()给注释掉,他的运行结果是只打印了1,2,3,函数里面的什么都没打。我猜想可能是因为gevent.spawn()只创建了greenlet对象,但是并没有执行greenlet的switch方法。但是我再网上查了下,gevent.spawn()的效果是“创建一个普通的Greenlet对象并切换”。请问到底是怎么回事?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-20 22:14:49 | 显示全部楼层
它其实偷偷在用子线程切代码运行 但是你不join 主线程执行到最后一行就没了呗 直接退出程序了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 07:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表