Lua函数如何判断自身是否处于协程执行中?
- 内容介绍
- 文章标签
- 相关推荐
本文共计330个文字,预计阅读时间需要2分钟。
判断函数是否在协程中运行的方法如下:
例如,我有一个`send_message()`函数,它尝试发送三次消息。每次尝试之间需要等待一秒钟。如果从协程中调用此函数,我希望`send_message()`函数执行。
pythondef send_message(): for _ in range(3): # 模拟发送消息 print(发送消息...) # 等待一秒钟 time.sleep(1)
假设这是在协程中调用async def main(): await send_message()
运行协程asyncio.run(main())
有没有办法让函数知道它是否在协程中运行?例如,我有一个send_message()函数,它尝试三次发送消息.在每次尝试之间需要等待一秒钟.如果从协程中调用此函数,我希望send_message()函数执行coroutine.yield()作为其wait-1秒循环的一部分.但如果它不在协程中,那么它应该做一个POSIX usleep().
有没有办法做到这一点?
我应该在Lua参考手册中看起来更好:coroutine.running()如果被主线程调用则返回nil,这对于这种情况是完美的.问的最初原因是我将coroutine.running()与coroutine.status()混合在一起.
见:www.lua.org/manual/5.1/manual.html#pdf-coroutine.running
并且:www.lua.org/manual/5.1/manual.html#pdf-coroutine.status
本文共计330个文字,预计阅读时间需要2分钟。
判断函数是否在协程中运行的方法如下:
例如,我有一个`send_message()`函数,它尝试发送三次消息。每次尝试之间需要等待一秒钟。如果从协程中调用此函数,我希望`send_message()`函数执行。
pythondef send_message(): for _ in range(3): # 模拟发送消息 print(发送消息...) # 等待一秒钟 time.sleep(1)
假设这是在协程中调用async def main(): await send_message()
运行协程asyncio.run(main())
有没有办法让函数知道它是否在协程中运行?例如,我有一个send_message()函数,它尝试三次发送消息.在每次尝试之间需要等待一秒钟.如果从协程中调用此函数,我希望send_message()函数执行coroutine.yield()作为其wait-1秒循环的一部分.但如果它不在协程中,那么它应该做一个POSIX usleep().
有没有办法做到这一点?
我应该在Lua参考手册中看起来更好:coroutine.running()如果被主线程调用则返回nil,这对于这种情况是完美的.问的最初原因是我将coroutine.running()与coroutine.status()混合在一起.
见:www.lua.org/manual/5.1/manual.html#pdf-coroutine.running
并且:www.lua.org/manual/5.1/manual.html#pdf-coroutine.status

