Python threading - возвращает управление терминалу, оставляя открытую рамку - PullRequest
1 голос
/ 04 мая 2011

Подводя итог: я хочу открыть фрейм в Python, иметь возможность работать с этим фреймом, а также продолжать использовать этот терминал.

По сути, я хотел бы имитировать некоторые Matlabповедение в Python.В 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 ]

3 голосов
/ 04 мая 2011

matplotlib смешно использует plt.show (). Чтобы получить желаемое поведение, посмотрите документы об интерактивном использовании matplotlib . Приятно, что нет необходимости в многопоточности.

(В вашем решении график подготовлен в фоновом режиме, фоновый поток заканчивается, а ваши фоновые потоки остаются в plt.show)

0 голосов
/ 05 мая 2011

Ответ jtniehof хорош. В качестве альтернативы вы можете взглянуть на pysvr внутри исходного дистрибутива Python. Он позволяет вам подключиться к работающему процессу Python и получить REPL таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...