小编Nat*_*ley的帖子

asyncio的call_later引发'generator'对象不能用coroutine对象调用

我有一些使用Python 3.4的asyncio使用的简单代码call_later.代码应该打印,等待10秒,然后再次打印(但是应该TypeErrorend()应该被激活时加注,见下文):

import asyncio

@asyncio.coroutine
def begin():
    print("Starting to wait.")
    asyncio.get_event_loop().call_later(10, end())

@asyncio.coroutine
def end():
    print("completed")

if __name__ == "__main__":
    try:
        loop = asyncio.get_event_loop()
        loop.create_task(begin())
        loop.run_forever()
    except KeyboardInterrupt:
        print("Goodbye!")
Run Code Online (Sandbox Code Playgroud)

给出错误:

Exception in callback <generator object coro at 0x7fc88eeaddc8>()
handle: <TimerHandle when=31677.188005054 <generator object coro at 0x7fc88eeaddc8>()>
Traceback (most recent call last):
  File "/usr/lib64/python3.4/asyncio/events.py", line 119, in _run
    self._callback(*self._args)
TypeError: 'generator' object is not callable
Run Code Online (Sandbox Code Playgroud)

从我从文档中可以看出(https://docs.python.org/3/library/asyncio-task.html#coroutine),call_later获取一个协程对象,它通过调用协程函数获得.这似乎是我所做的,但asyncio没有end()正确调用.

应该怎么做?

python python-asyncio

8
推荐指数
1
解决办法
6313
查看次数

如何判断 Python 模块是否是命名空间模块

在 Python 3 中,模块可以是没有命名空间模块__init__.py(根据PEP 420)或作为常规模块(即“[modules] 包,因为它们在 Python 3.2 及更早版本中实现” - PEP 420)具有一个__init__.py或 是单个.py文件。

如何区分命名空间模块和“普通”模块?

(我使用的是 Python 3.5.3)

例如命名空间模块命名mod打印为:

(Pdb) mod
<module 'mymodule' (namespace)>
Run Code Online (Sandbox Code Playgroud)

和普通模块打印为:

(Pdb) mod
<module 'mymodule' from '/path/to/mymodule/__init__.py'>
Run Code Online (Sandbox Code Playgroud)

python namespaces module python-3.x

6
推荐指数
2
解决办法
1380
查看次数

在dired中查找并替换没有正则表达式

我正在尝试将网站转换为电子书,并且在每个页面的开头都有大量的html我要删除.正如您可以想象的那样,Q由于大块中的某些内容未正确转义,因此使用不匹配的结果.当我尝试解决问题时,我得到堆栈溢出.

我真正需要的是一种在没有正则表达式的情况下以正常的M-%方式查找和替换dired的方法.这可能吗?

emacs replace dired

4
推荐指数
1
解决办法
439
查看次数

在ROOT中绘制ASCII文件

我正在尝试编写一个小宏,它从具有4列的ASCII文件中读取数据.但是我想仅将第二列的第二列绘制为(x,y).

c++ root-framework

0
推荐指数
1
解决办法
2973
查看次数