处理一下quit的情况
This commit is contained in:
parent
f94bf4fd8d
commit
3e70d8b27b
12
main.py
12
main.py
@ -81,10 +81,11 @@ class PikpakConsole(cmd2.Cmd):
|
|||||||
return await asyncio.wrap_future(future)
|
return await asyncio.wrap_future(future)
|
||||||
|
|
||||||
async def aoutput(self, output):
|
async def aoutput(self, output):
|
||||||
async def PrintOuput(output):
|
return ""
|
||||||
print(output)
|
# async def PrintOuput(output):
|
||||||
future = asyncio.run_coroutine_threadsafe(PrintOuput(output), self.ioLoop)
|
# print(output)
|
||||||
await asyncio.wrap_future(future)
|
# future = asyncio.run_coroutine_threadsafe(PrintOuput(output), self.ioLoop)
|
||||||
|
# await asyncio.wrap_future(future)
|
||||||
|
|
||||||
async def Run(self):
|
async def Run(self):
|
||||||
# 1. 设置忽略SIGINT
|
# 1. 设置忽略SIGINT
|
||||||
@ -117,7 +118,8 @@ class PikpakConsole(cmd2.Cmd):
|
|||||||
with self.sigint_protection:
|
with self.sigint_protection:
|
||||||
if saved_readline_settings is not None:
|
if saved_readline_settings is not None:
|
||||||
self._restore_readline(saved_readline_settings)
|
self._restore_readline(saved_readline_settings)
|
||||||
self.ioLoop.stop()
|
# https://stackoverflow.com/questions/51642267/asyncio-how-do-you-use-run-forever
|
||||||
|
self.ioLoop.call_soon_threadsafe(self.ioLoop.stop)
|
||||||
thread.join()
|
thread.join()
|
||||||
|
|
||||||
def do_debug(self, args):
|
def do_debug(self, args):
|
||||||
|
42
test.py
42
test.py
@ -1,42 +0,0 @@
|
|||||||
import asyncio
|
|
||||||
import threading
|
|
||||||
import nest_asyncio
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
async def aoutput(output):
|
|
||||||
print(output)
|
|
||||||
|
|
||||||
# 定义一个函数来启动事件循环
|
|
||||||
def start_event_loop(mainloop, newloop):
|
|
||||||
asyncio.set_event_loop(newloop)
|
|
||||||
newloop.run_forever()
|
|
||||||
|
|
||||||
async def myinput(newloop):
|
|
||||||
future = asyncio.run_coroutine_threadsafe(asyncio.con(input("input")), newloop)
|
|
||||||
return await asyncio.wrap_future(future)
|
|
||||||
|
|
||||||
async def myoutput(newloop, output):
|
|
||||||
future = asyncio.run_coroutine_threadsafe(aoutput(output), newloop)
|
|
||||||
await asyncio.wrap_future(future)
|
|
||||||
|
|
||||||
async def main(mainloop, newloop):
|
|
||||||
while True:
|
|
||||||
res = await myinput(newloop)
|
|
||||||
await myoutput(newloop, res)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
nest_asyncio.apply()
|
|
||||||
|
|
||||||
# 创建一个新的事件循环
|
|
||||||
main_loop = asyncio.get_event_loop()
|
|
||||||
new_loop = asyncio.new_event_loop()
|
|
||||||
|
|
||||||
# 使用 threading 模块创建一个新线程,并在该线程中运行事件循环
|
|
||||||
thread = threading.Thread(target=start_event_loop, args=(main_loop, new_loop,))
|
|
||||||
thread.start()
|
|
||||||
|
|
||||||
asyncio.run(main(main_loop, new_loop))
|
|
||||||
|
|
||||||
# 等待线程完成
|
|
||||||
thread.join()
|
|
Loading…
x
Reference in New Issue
Block a user