相关疑难解决方法(0)

使用asyncio时,如何在关闭事件循环之前完成所有正在运行的任务

我有以下代码:

@asyncio.coroutine
def do_something_periodically():
    while True:
        asyncio.async(my_expensive_operation())
        yield from asyncio.sleep(my_interval)
        if shutdown_flag_is_set:
            print("Shutting down")
            break
Run Code Online (Sandbox Code Playgroud)

我运行此功能直到完成.设置关闭时会出现问题 - 该功能完成,任何挂起的任务都不会运行.(你认为这是一个错误

task: <Task pending coro=<report() running at script.py:33> wait_for=<Future pending cb=[Task._wakeup()]>>
Run Code Online (Sandbox Code Playgroud)

).如何正确安排关机?

为了给出一些上下文,我正在编写一个系统监视器,它每隔5秒从/ proc/stat读取一次,计算该时间段内的CPU使用率,然后将结果发送到服务器.我想继续安排这些监视作业,直到我收到sigterm,当我停止调度,等待所有当前作业完成,然后正常退出.

python python-3.4 python-asyncio

44
推荐指数
3
解决办法
2万
查看次数

Python - queue.task_done()用于什么?

我写了一个脚本,它有多个线程(用它创建threading.Thread)从一个Queueusing中获取URL queue.get_nowait(),然后处理HTML.我是多线程编程的新手,我很难理解queue.task_done()函数的用途.

Queue为空时,它会自动返回queue.Empty异常.所以我不明白每个线程需要调用该task_done()函数.我们知道我们已经完成了队列的空白,所以为什么我们需要通知它工作线程已经完成了他们的工作(与队列有关,在他们从中获取了URL之后) ?

有人可以给我提供一个代码示例(理想情况下使用urllib,文件I/O,或斐波那契数字以外的其他内容并打印"Hello"),它向我展示了如何在实际应用中使用此函数?

python queue task

7
推荐指数
4
解决办法
4229
查看次数

标签 统计

python ×2

python-3.4 ×1

python-asyncio ×1

queue ×1

task ×1