这就是我的设想。我有一个python脚本,它在一个接受用户输入的无限while循环中运行。在
但现在我希望在主循环阻塞(等待python的input()函数)仍在运行时,每隔n秒就有另一个函数执行一次操作。我已经研究过asyncio和scheduling,但它们似乎不适用于阻塞函数调用,还是我搞错了?在
我已经研究过多处理,但还不能确定我到底应该如何做。在
编辑:
if __name__ == "__main__":
def survivor():
count = 5
while count:
print("alive")
time.sleep(8)
count -= 1
print("done")
test = JobChainClient()
cli = threading.Thread(name="cli", target=test.getShell())
network = threading.Thread(name="network", target=survivor())
cli.start()
network.start()
print("Done")
这段代码获取了我的CLI(一个无限while循环)和我的网络守护程序。当我运行这个程序时,它显然有效,但问题是:
^{pr2}$我的循环在exit命令后中断,只有其他线程才启动,我可能只是错过了一些东西,请纠正我。在
最简单的解决方案是在单独的线程中调用另一个函数(每隔n秒执行一次操作)。在
如果您想使用asyncio,请查看^{} ,它提供了
input()
的异步等价物。在编辑
关于更新后的问题,启动线程的正确方法是:
用户不能同步输入。每个阻塞=阻塞线程,它应该同时处理您的其他请求。在
为了从异步编程模式中获得最大的收益,您必须在任何地方使用异步。在
其主要思想是有一个事件循环,其中没有任务被阻塞。任务应该尽快返回某种承诺,即在将来的某个时候,它将通过返回值来实现。然后eventloop可以继续并立即处理下一个任务。在
如果您真的需要同步阻塞,您应该生成新的线程来执行cpu密集型的绑定任务。在
相关问题 更多 >
编程相关推荐