Ipython: ピプロットをインポートすると、Macでドックアイコンがバウンドします

作成日 2017年01月08日  ·  10コメント  ·  ソース: ipython/ipython

これは、次のgifで示されています。

image

通常のpythonreplでpyplotをインポートすると、pythonロケットアイコンが表示されますが、気が散るほど跳ね返ることはありません。 IPython内にインポートすると、アイコンが1分近く迷惑にバウンスします。

これは、HomebrewのPythonのフレームワークビルドを使用しています。

bug

最も参考になるコメント

マシンがフリーズしていないことに気付くのに10秒かかりましたが、私が見ていたポインターは.gif内のポインターでした。

全てのコメント10件

どのバックエンドを使用していますか? plt.ion()または%matplotlib役に立ちますか?

私のひざまずく/私が推測するようにこれを構成することは次のとおりです:IPythonがreadlineから切り離されると、 PyOS_InputHook機構からも切り離されます。 プレーンなPythonの場合、GUIが起動(バウンスを開始)し、GUIコードがフックをインストールし、起動が完了すると、GUIメインループがインターコレートされて実行されるため、ロケットがバウンスを停止することを通知する方法を電話で通知します。担当者 IPythonでは、そのフックはまだインストールされていますが、IPythonはプロンプトツールキットを介して実行されているため、問題ではありません。 IPythonイベントループ統合を開始すると、GUIは電話をかけ、バウンスを停止します。

または、私はベースから大きく外れている可能性があります。

これはMacOSXバックエンドを使用しています。 pyplotインポートの後にplt.ion()または%matplotlibを使用してもバウンスは停止せず、パイプロットインポートを実行する前に%matplotlibすると、アイコンがバウンスを開始します。

tkバックエンドで発生しますか?

いいえ、 TkAggのロケットアイコンはありません。

#9312にリンクされているままにしておきます
私はそれを理解しようとします。 @minrkにpingを実行します。

私はこれを言うつもりです:

    if not window_count:
        return

ウィンドウがない場合でもeventloop統合を実行する必要があるため、削除する必要があります...それは私にとっては機能しているようです。
別の方法は、ウィンドウがない場合でも、 inputhook(context)が少なくとも1つのループを実行することを確認することです。

    global at_least_once
    if not window_count and not at_least_once:
        at_least_once = True
        return

@ngoldbaum試してみませんか?
また、最初のウィンドウができたらすぐにバウンドが止まると思いますか?

スクリーンレコーディングはまた、タイピングがリアルであるため私を幸せにし、私の恐ろしいタイピングについて罪悪感を感じさせません。

確かに、それを削除する

if not window_count:
    return

ブロックは私のために問題を修正します。 そして、あなたが疑ったように、プロットを作成することはバウンスを止めます。

提出された#10150は、より資格のある人々のレビューを待ちます。

マシンがフリーズしていないことに気付くのに10秒かかりましたが、私が見ていたポインターは.gif内のポインターでした。

このページは役に立ちましたか?
0 / 5 - 0 評価