我读过很多不同的文章,解释Python中的async
。但是他们都用asyncio.sleep(x)
给出了一个例子,就像这样:
import asyncio
async def test1 ():
await asyncio.sleep(1)
print(1)
async def test2 ():
print(2)
async def main ():
await asyncio.gather(test1(), test2())
asyncio.run(main()) #prints 2, then 1
在这种情况下,我很清楚:函数test1中的wait表示,在asyncio.sleep的执行过程中,我们可以执行其他操作,例如执行函数test2。
我不明白的是,如果我在代码中不使用睡眠,异步怎么会有用?在这种情况下,我如何同时运行函数?例如,如何在下面的示例中同时运行函数test1和test2?
import asyncio
import time
async def calculate (a):
return a**a
async def test1 ():
x = await calculate(1111111)
print('done!')
async def test2 ():
for i in range(100):
print('.', end='')
async def main ():
await asyncio.gather(test1(), test2())
asyncio.run(main()) #prints 'done!' before the dots
您可以通过任务来实现这一点。
任务用于并发调度协程。
如果将协同程序包装到具有类似于asyncio.create_Task()
(请参阅官方文档)的功能的任务中,则会自动安排协同程序很快运行:
import asyncio
import time
async def calculate(a):
return a**a
async def test1():
# Schedule calculate(a) to run soon concurrently
# with "main()".
task = asyncio.create_task(calculate(11111))
# "task" can now be used to cancel "calculate(a)", or
# can simply be awaited to wait until it is complete:
await task
print('done!')
async def dots_printer():
for i in range(100):
print('.', end='')
async def test2():
# Schedule dots_printer() to run soon concurrently
# with "main()".
task = asyncio.create_task(dots_printer())
# "task" can now be used to cancel "dots_printer()", or
# can simply be awaited to wait until it is complete:
await task
async def main():
await asyncio.gather(test1(), test2())
asyncio.run(main()) #prints the dots before 'done!'
问题内容: 我想知道,由于Clojure Compiler和UglifyJS不仅针对大小优化代码,而且还针对性能进行优化(尽管我认为大小是主要的优先事项),如果将我的node.js应用程序缩小了,它将运行得更快吗?我知道这可能取决于应用程序,但我通常会问这个问题。 问题答案: 在节点中,主要处理成本是I / O操作,而不是实际的JavaScript本身。因此,例如: 在这里,调用与被触发的回调之间
我正在学习JAVA OCA认证书。我在二元运算符一章。这本书提到了以下规则。 、和在使用二进制运算符时将提升为int。 因此,目前,如果我定义并初始化一个short或byte类型的变量,它将自动转换为int。在书中,它说赋值是一个二进制运算符。 使用这些变量有什么意义吗? 如何在java中打印这种类型的变量?
我写了下面的代码来登录网站“qtpselenium.com”。 如果我将Thread.Sleep放在中间,使代码执行暂停一段时间,下面的代码就可以正常工作。如果我对thread.sleep进行注释,代码就不能按预期工作。我尝试使用selenium的隐式和显式等待来使驱动程序等待元素可见,但代码只能在使用Thread.Sleep时按预期工作。 有没有什么方法可以使下面的代码在不使用thraed.sl
在“旋转”和时查找里程之和并将里程之和聚合时,我缺少了什么?是否是值导致了错误?我认为对于聚合不是一个问题。
有什么富有诗意的新年祝福代码含义
我找不到在VS代码中对齐/识别代码行的快捷方式。 一个例子 我想要捷径做什么