Eventlet超时未退出

时间:2015-06-12 04:32:57

标签: python eventlet

为什么eventlet允许它完成6秒,当它应该在5秒后退出缩进?

func trynaReturnKeyboard -> Bool {

       firstTextField.resignFirstResponder()
       secondTextField.resignFirstResponder()
       return true

}

1 个答案:

答案 0 :(得分:2)

Eventlet提供合作多线程。这意味着您需要产生控制权以使集线器或协同程序(在这种情况下,集线器实现超时)有机会运行。控制权:

  • 使用绿色版本的IO和sleep
  • 或执行eventlet.monkey_patch(),现在您可以使用常规timesocket等模块,替换为“绿色”版本,与Eventlet合作。

没有绿色调用的任何CPU紧密代码,例如[_ for _ in xrange(1000000000)]根本不可能中断。如果您发现自己处于类似情况,请将eventlet.sleep(0)置于循环中,这将进入Eventlet集线器并允许超时工作。