我正在开发一个运行在InteractiveConsole
实例中通过网络接收的Python(3.5)代码的应用程序,并通过网络将输出返回给用户(使用异步多播UDP,而不是TCP)。这是一个业余爱好项目,因此在专业应用程序中采取一切可能需要的预防措施是没有必要的,但我担心应用程序会在诸如while
循环执行过快而网络无法保持的情况下中断用。
如果可能,我可以通过在执行任何给定语句之后让交互式控制台执行time.sleep(0.25)
或类似的东西来解决这个问题。交互式控制台在其自己的线程中运行,因此停止应用程序的其余部分并不是一个问题。
我认为这个问题很普遍,我的代码不是必需的,但是当我不可避免地意识到这是一个稍微简化的片段时,为了省去我们所有的麻烦:
def recv_command(self, commands):
# commands is a string containing a block of Python code
console.runsource('exec("""'+commands+'""")')
# output is sent over the network through a custom write() method
# in the interactive console's stdout rather than explicitly on
# each call of this method
如果这是可行的/实际的,那怎么会这样做?