小编Car*_*los的帖子

在python中有一种方法可以在调用之前检查函数是否是"生成器函数"?

可以说我有两个功能:

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 function generator coroutine

57
推荐指数
3
解决办法
7533
查看次数

在Python中有类似于Java的Thread.yield()的东西吗?这甚至有意义吗?

我想告诉我的Python线程屈服,因此避免不必要地占用CPU.在Java中,您可以使用该Thread.yield()函数执行此操作.我不认为Python中有类似的东西,所以我一直在使用time.sleep(t)where t = 0.00001.因为t=0似乎没有效果.

我想也许有些东西我对Python的线程模型没有正确理解,因此缺少原因thread.yield().有人可以向我澄清这个吗?谢谢!

PS:这是Java的文档Thread.yield()所说的:

导致当前正在执行的线程对象暂时暂停并允许其他线程执行.

python multithreading sleep yield

8
推荐指数
2
解决办法
6906
查看次数

标签 统计

python ×2

coroutine ×1

function ×1

generator ×1

multithreading ×1

sleep ×1

yield ×1