在Python中,以下代码片段在执行后将打开一个交互式 shell。
这在调试不太被文档记录的代码时非常有用。人们可以使用shell来浏览程序环境并找出问题所在,即使没有调试器也可以。目前为止,还不错。
现在的挑战是:
我正在使用的软件(顺便说一下,它是用Django编写的)使用某种调度机制,然后与 其他 Python 进程通信,我无法控制它,除了编辑其代码。除了发送给它进行处理的变量之外,我没有任何输入内容。
但是,由于文档非常贫乏,我不知道代码如何工作,因此我想使用
但是,这个进程是在后台的某个地方启动的,由某些特殊的调度软件发出信号和对象,然后在任意时间(10-200ms之间的任何时间)在完全不同的进程中运行。当收到信号和对象时,标准输入/输出已经不存在了。
所以我认为,与其使用stdin/stdout与
现在我正在尝试仅通过Django进程本身让其工作,以便排除调度问题,虽然交互式shell确实启动了,但立即关闭,既不接受包含命令的文件作为内容,也不接受用于传输Python命令的Unix套接字。
长话短说; 有没有可能通过除stdin/stdout之外的其他方式与由
提前致谢。
import code; code.interact(local = locals())
这在调试不太被文档记录的代码时非常有用。人们可以使用shell来浏览程序环境并找出问题所在,即使没有调试器也可以。目前为止,还不错。
现在的挑战是:
我正在使用的软件(顺便说一下,它是用Django编写的)使用某种调度机制,然后与 其他 Python 进程通信,我无法控制它,除了编辑其代码。除了发送给它进行处理的变量之外,我没有任何输入内容。
但是,由于文档非常贫乏,我不知道代码如何工作,因此我想使用
code.interact
方法来解决问题。但是,这个进程是在后台的某个地方启动的,由某些特殊的调度软件发出信号和对象,然后在任意时间(10-200ms之间的任何时间)在完全不同的进程中运行。当收到信号和对象时,标准输入/输出已经不存在了。
所以我认为,与其使用stdin/stdout与
code.interact
通信,不如通过指定readfunc
参数来使用文件句柄或Unix套接字。我尝试过通过open()
打开文件和套接字,但没有成功。现在我正在尝试仅通过Django进程本身让其工作,以便排除调度问题,虽然交互式shell确实启动了,但立即关闭,既不接受包含命令的文件作为内容,也不接受用于传输Python命令的Unix套接字。
长话短说; 有没有可能通过除stdin/stdout之外的其他方式与由
code.interact
调用的交互式shell进行通信?如果是这样,怎么做?提前致谢。