Python线程 - 在保持帧打开的同时将控制权返回给终端

时间:2011-05-04 18:24:12

标签: python multithreading matplotlib

总结一下:我想在Python中打开一个框架,能够使用该框架,并且还能够继续使用该终端。

基本上,我想在Python中模仿一些Matlab行为。在Matlab中,你可以这样做:

x=0:10;
y=0:10;
plot(x,y)

并且会出现一个情节,互动,你也可以访问终端来改变事物并做其他工作。

我认为在Python中,如果我正确地进行了线程化,我可以做同样的事情。但是,下面的代码可以控制终端。

from threading import Thread
from matplotlib import pyplot as plt

class ThreadFrame(Thread):
    def __init__(self):
        Thread.__init__(self)

    def setup(self):
        my_plot = plt.plot(range(0,10), range(0,10))
        fig = plt.gcf()
        ax = plt.gca()

my_thread = ThreadFrame()
my_thread.start()
my_thread.setup()

plt.show()

我是否应该采用与线程不同的方式做些什么?或者还有另一种方法可以实现这一目标吗?

2 个答案:

答案 0 :(得分:3)

matplotlib对使用plt.show()感到好笑。要获得所需的行为,请查看docs on using matplotlib interactively。好的是,没有必要的线程。

(在您的解决方案中,绘图是在后台准备的,后台线程终止,前景线程保留在plt.show中)

答案 1 :(得分:0)

jtniehof的回答很好。或者,您可以查看Python源代码分发中的pysvr。它允许您连接到正在运行的Python进程并以这种方式获取REPL。