Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有人能给我解释一下asyncio和regular time.sleep()是如何工作的吗?_Python_Discord.py_Python Asyncio - Fatal编程技术网

Python 有人能给我解释一下asyncio和regular time.sleep()是如何工作的吗?

Python 有人能给我解释一下asyncio和regular time.sleep()是如何工作的吗?,python,discord.py,python-asyncio,Python,Discord.py,Python Asyncio,我正在用python制作discord机器人。我想让它在两个香奈儿之间快速移动,然后回到他以前所在的频道Needed_member是我从消息提及中获得的成员,channel_one和channel_two是移动Around的频道,channel_to_return作为用户当前语音频道提前分配了几行。它可以工作,但并不像预期的那样-用户正在两个频道之间移动,正如我所希望的,但最后一次移动到channel\u to\u return会在几秒钟后执行。我认为这是因为移动是一种常规,而时间睡眠是以正常的

我正在用python制作discord机器人。我想让它在两个香奈儿之间快速移动,然后回到他以前所在的频道
Needed_member
是我从消息提及中获得的成员,
channel_one
channel_two
是移动Around的频道,
channel_to_return
作为用户当前语音频道提前分配了几行。它可以工作,但并不像预期的那样-用户正在两个频道之间移动,正如我所希望的,但最后一次移动到
channel\u to\u return
会在几秒钟后执行。我认为这是因为移动是一种常规,而时间睡眠是以正常的同步方式执行的。有人能解释一下这到底是怎么回事吗

'''


''

你还没有详细说明你是如何不理解这一点的。是的,最后一步可以在几秒钟内完成<代码>睡眠是同步的<代码>等待只是等待异步调用返回——简而言之,它将异步调用转换为正常的同步调用,就这一执行级别而言

您循环5次,总共执行10次
sleep
延迟,每次0.2秒。这是内置的2秒延迟。加上11个
move_to
操作的执行时间,就得到了这段代码的总时间

以秒为单位的延迟很简单

10 * 0.2 + 11 * <delay of move_to>
10*0.2+11*

这是否澄清了您的理解?

请注意,您不应该在异步函数中使用
time.sleep()
,因为它会阻塞整个事件循环-在休眠期间,无法运行异步协程,也无法处理事件。您应该
等待asyncio.sleep(0.2)
而不是。我确实按照您的建议等待asyncio.sleep,现在按我的要求在for循环内部执行,但最后一步(for循环之后的那一步)仍然在大约5秒后执行,而不是0.2为什么您希望它在0.2秒后执行?您有一个
for
循环,在每次迭代中执行5次,执行两次0.2s休眠和两次
move_to
操作。整个过程需要花费超过0.2秒的时间,你不同意吗?谢谢,这让事情变得更清楚了。我用asyncio.sleep()替换了time.sleep(),但效果相同。我应该怎么做才能每0.2秒执行一次移动?嗯。。。。这是一个新问题,需要您提供预期的结果。这篇文章没有显示您当前的功能。
10 * 0.2 + 11 * <delay of move_to>