我正在编写一个Sublime Text插件,该插件提供了多个可通过UNIX套接字访问的Python Shell。每个外壳都应充当在其自己的线程上运行的独立REPL。 (不希望这些shell具有自己的进程;共享一个进程是绝对必要的。)
如果代码是用exec()
编译的,则内置mode='single'
函数会将输出打印到stdout,并且该表达式的计算结果不为None。我需要通过套接字发送此输出。
我知道可以通过patching stdout完成此操作。但是,这在这里不起作用,因为多个控制台可能正在多个线程中运行(加上内置控制台)。
我的想法如下:
compile()
mode='eval'
eval()
输入,mode='exec'
,然后打印结果(如果不是None的话)。如果无法编译,请尝试使用mode='single'
而不是sys.stdout
。sys
。gcc -c -x c `pkg-config --cflags gio-2.0` myglade.gresource.c
。这些似乎不是好主意。有更好的吗?
答案 0 :(得分:1)
如果您对单一进程一无所知,那么根据您愿意尝试使用CPython实现的晦涩的C级功能的不同,可以尝试研究subinterpreters。据我所知,这些是CPython在单个进程中提供的最高隔离级别,并且它们允许类似的sys.stdout
对象之类的东西用于单独的子解释器。