我正在试图弄清楚异步功能在Python中是如何工作的。我看过无数的视频,但我想我不是'得到它'。我的代码如下:
def run_watchers():
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
loop.run_until_complete(watcher_helper())
loop.close()
async def watcher_helper():
watchers = Watcher.objects.all()
for watcher in watchers:
print("Running watcher : " + str(watcher.pk))
await watcher_helper2(watcher)
async def watcher_helper2(watcher):
for i in range(1,1000000):
x = i * 1000 / 2000
对我来说有意义的是有三个功能。一个启动循环,第二个迭代执行不同的选项,第三个执行工作。
我期待以下输出:
Running watcher : 1
Running watcher : 2
...
...
Calculation done
Calculation done
...
...
但是我得到了:
Running watcher : 1
Calculation done
Running watcher : 2
Calculation done
...
...
这显然表明计算不是并行完成的。知道我做错了吗?
答案 0 :(得分:2)
&::-internal-media-controls-download-button {
display: none !important;
}
只能用于加速多个网络I / O相关功能(通过互联网发送/接收数据)。当您从网络等待一些数据(这可能需要很长时间)时,您通常会闲置。使用asyncio
允许您将此空闲时间用于另一个有用的作业:例如,启动另一个并行网络请求。
asyncio
无法以某种方式加速与CPU相关的工作(这是asyncio
在您的示例中所做的事情)。当你将一些数字相乘时,根本没有空闲时间可以用来做不同的事情并通过它获得好处。
另请阅读this answer以获取更详细的说明。