2017-08-30 16 views
3

私はWindowsでiPythonを使用しています。 私は現在、ソケット受信に固執できるPythonスクリプトを作成しています(私はまだこの部分で堅牢性を実装していません)。ipythonプロセスを殺すことはできません

私はすべての通常のキリングプロセスのキーの組み合わせ(少なくとも私が知っているもの)を試していますが、iPythonはスタックしていますので、閉じて再オープンする必要があります。 Ctrl + C、Ctrl + Z、Ctrl + Dを試しましたが、他の組み合わせがあるかどうかわかりません。

誰もこの種の問題を抱えていますか?

exit 

またはカーネルを再起動しよう:

アレクサンドル

+0

Ctrl + Alt + Suppr? – CCH

+1

_that_は迷惑です。私はスレッドでソケットのことを行うことでこれを回避し、メインでtime.sleep()をループし、CTRL + Cが機能するようにしました。 –

+0

どのIDEを使用しているのか分かりますか? –

答えて

2

いくつかのブロック操作が適切に中断することはできません(cannot interrupt lock.acquire() whereas I can interrupt time.sleep()を参照)

私はあなたのコード内で何が起こっているのか知っているあなたを必要とするいくつかのアプローチを提案します。

  • それにあなたのコードでスレッドを実行するには、例外のハンドラが解放する/スレッドが終了することができ、ソケットを閉じKeyboardInterrupt
  • のためのブロックを除いてのtry /メインを実行します。

簡単にするためにスレッドロックを使用した例を作成しました。これをソケットなどのブロックリソースに適用できます。

import threading 
import time,sys 

l = threading.Lock() 

def run(): 
    global l 
    l.acquire() 
    l.acquire() 

t = threading.Thread(target=run) 
t.start() 

while True: 
    try: 
     time.sleep(1) 
    except KeyboardInterrupt: 
     print("quitting") 
     l.release() # now thread can exit safely 
     break 
0

は、次のコマンドを試してみてくださいお願いします。 (オペレーティングシステムに関連する)

+0

何ですか? OPがCTRLをタイプできない場合、どうやって 'exit 'とタイプすることができますか?プラスそれは間違ったプレーンです。それは動作しません –

+0

カーネルを再起動しようとしましたか? –

+0

[もう一度電源を切ってみましたか?](https://www.youtube.com/results?search_query=it+crowd+have+you+tried+turning+it+off+and+on+again ) –

関連する問題