假设我在 Kivy 中动态定义了一些小部件(按钮)并动态分配它们的 id。在这个用例中我没有使用 kv 语言。我可以保留小部件 id 的引用,而无需跟踪小部件本身:然后我想通过其 id 访问小部件。我可以做类似“通过 id 获取小部件”之类的事情吗?(如果我在 kv 文件中定义了小部件,我可以使用 self.ids.the_widget_id 通过其 id 访问小部件本身)
有人设法使Cython与Asyncio协程一起工作吗?我有一个非常简单的例子,在Python中运行良好,并拒绝在Cython中工作:它是我用Cython编译并执行的以下单个文件.执行正确启动但无法运行协同程序.似乎Cython修改了"sometask"协程的类型,然后Asyncio和Inspect不会像往常那样对待它.
#!/usr/bin/env python
import asyncio
@asyncio.coroutine
def sometask():
counter = 0
while True:
print(counter)
yield from asyncio.sleep(1)
counter += 1
def runloop():
loop = asyncio.get_event_loop()
asyncio.async(sometask())
try:
print('Start loop')
loop.run_forever()
except KeyboardInterrupt:
print('Aborted by user')
loop.close()
Run Code Online (Sandbox Code Playgroud)
更新:目前我通过在一个丑陋的方式修改asyncio/tasks.py文件来检查对象是否是一个生成器的地方让它"工作",而事实上Cython使它成为一个内置函数.这个Cython对象仍然会执行asyncio协同程序的工作,即使它具有与预期不同的类型.