2017-04-26 20 views
0

別のシェルで別のスクリプトを再起動する方法はありますか? GmailやIMAPからメールを読むのを待っているスクリプトがあります。私は主なものを再起動したい別のスクリプトからではなく、私が試してみました第二 の実行を停止することなく:別のcmdのウィンドウでPythonを再起動するスクリプト

os.system("C:\Users\light\Documents\Python\BOTBOL\Gmail\V1\send.py") 
process = subprocess.Popen(["python", "C:\Users\light\Documents\Python\BOTBOL\Gmail\V1\send.py"]) 

が、両方が第二のシェル EDITでメインを実行します。 申し訳ありませんが、シェルのために私が意味をターミナルウィンドウ

+0

*別のシェルで*を意味しますか????私はプロセスとスレッドが何であるかを知っています、シェルとは何か、またターミナルウィンドウは何かを知っていますが、別のシェルで別のスクリプトを開始することを意味するものは理解できません。* –

+0

ターミナルウィンドウ、申し訳ありません – LORMILAN

答えて

0

最後のコメントの後に、Windowsを使用していることを示すシンタックスとして、別のコンソールでPythonスクリプトを起動するとします。ここでのマジックワードは、新しいプロセスと並行して起動する場合はSTART、サブプロセスの終了を待つ場合はSTART /Wとなります。

subprocess.call(["cmd.exe", "/c", "START", "C:\Path\To\PYTHON.EXE", 
    "C:\Users\light\Documents\Python\BOTBOL\Gmail\V1\send.py"]) 
+0

がうまくいくようです。 – LORMILAN

0

サブプロセスには、あなたが望むシェルというオプションがあります。 Os呼び出しがブロックされているため、コマンドが完了した後でインタプリタが次の行に移動します。一方、サブプロセスのpopenは非ブロックですが、これらの両方のコマンドはこのコードを実行しているプロセスから子プロセスを生成します。あなたがシェルで実行し、これを実行するアクセスシェルの機能を取得する場合は、サブプロセスでshell = Trueを試してみてください。

+0

こんにちは、私はこれを使用しました: – LORMILAN

+0

subprocess.Popen(["C:\ Users \ light \ Documents \ Python \ BOTBOL \ Gmail \ V1 \ send.py"]、shell = True)同じシェル内にまだ – LORMILAN

+0

があります – LORMILAN

0

は、私が試してみて、あなたが必要なすべてを説明することができますが、私はこのビデオは、より良いそれを行うだろうと思う:あなたのケースでは

、あなたが使用することができYoutube Video about multithreading

は、これは2つのことを実行できるようになりますフェ 1つはチェックインの電子メールで、もう1つは入力で実行されるので、それらの瞬間に停止し、複数の「棚」を並行させることはできません。

本当に別のウィンドウが必要な場合は、申し訳ありませんが、私は助けません。

これはあなたが探していたものです。

+0

私は試しましたが(おそらく十分ではありません)しかし、それはまだそれが2番目のスレッドを開始する前に終了する最初のスレッドを待っているようだ(おそらく私は間違っている) – LORMILAN

+0

それは2スレッドを使用する必要がありますが、あなたは1つのメインとdefで別のスレッドがあります。 – Stijn

関連する問題