内容
PowerShellを使用して、同時に複数のPythonを並列実行したいと考えています。
Start-Job
を使用しましたが、並列ではなく直列で実行されている状況です。
調べても原因がわかっていないため、アドバイスをいただきたくご質問です。
実行の流れ
- PowerSell から
.\Execute.ps1
を実行 - Execute.ps1 がバックグラウンドで
Before.py
を実行 - Execute.ps1 がバックグラウンドで
After.py
を実行
PowerShell
1# ファイル名:Execute.ps1 2 3$py_before = {py -3 Before.py} 4$py_after = {py -3 After.py} 5 6# バックグラウンド実行 7Start-Job -Name "py_before" $py_before 8Start-Job -Name "py_after" $py_after 9 10# バックグラウンドJobの終了を待つ 11Get-Job -name "py_*" | Wait-Job | Receive-Job 12 13# Jobの終了 14Remove-Job -name "py_*" -force
python
1# ファイル名:Before.py 2 3import time 4 5for i in range(5): 6 print("before: " + str(i)) 7 time.sleep(3) 8print("before: finish")
python
1# ファイル名:After.py 2 3import time 4 5for i in range(5): 6 print("after: " + str(i)) 7 time.sleep(3) 8print("after: finish")
実行結果
PowerShell
1before: 0 2before: 1 3before: 2 4before: 3 5before: 4 6before: finish 7after: 0 8after: 1 9after: 2 10after: 3 11after: 4 12after: finish
期待する実行結果
並列で実行されることを期待しているため、以下のような出力がされることを想定しています。
PowerShell
1before: 0 2after: 0 3before: 1 4after: 1 5before: 2 6after: 2 7before: 3 8after: 3 9before: 4 10after: 4 11before: finish 12after: finish
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/19 12:38
2020/11/19 13:25