可以说我有两个功能:
def foo():
return 'foo'
def bar():
yield 'bar'
Run Code Online (Sandbox Code Playgroud)
第一个是正常函数,第二个是生成器函数.现在我想写这样的东西:
def run(func):
if is_generator_function(func):
gen = func()
gen.next()
#... run the generator ...
else:
func()
Run Code Online (Sandbox Code Playgroud)
什么是直截了当的实现is_generator_function()?使用types包我可以测试是否 gen是生成器,但我希望在调用之前这样做func().
现在考虑以下情况:
def goo():
if False:
yield
else:
return
Run Code Online (Sandbox Code Playgroud)
调用goo()将返回生成器.我假设python解析器知道该goo()函数有一个yield语句,我想知道是否可以轻松获取该信息.
谢谢!
我想告诉我的Python线程屈服,因此避免不必要地占用CPU.在Java中,您可以使用该Thread.yield()函数执行此操作.我不认为Python中有类似的东西,所以我一直在使用time.sleep(t)where t = 0.00001.因为t=0似乎没有效果.
我想也许有些东西我对Python的线程模型没有正确理解,因此缺少原因thread.yield().有人可以向我澄清这个吗?谢谢!
PS:这是Java的文档Thread.yield()所说的:
导致当前正在执行的线程对象暂时暂停并允许其他线程执行.