2017-08-30 85 views
-1

我正在使用2個python腳本: 腳本1使用subprocess.Popen()在腳本2中執行一個進程。在執行此過程時(需要一些時間),腳本1正在執行其他任務。 問題1)子過程是否是解決這個問題的最好方法? 問題2)有沒有什麼辦法通過使用通訊()將腳本1中的變量(只有int/float值)傳遞給腳本2 BESIDES?我如何在腳本2中使用這些變量(即我如何解決它們)?Python子流程標準桿

感謝您的幫助!

回答

0

如果兩者都是python,爲什麼還要去終端?

你可以使用pythons線程。如果您想通過終端做它,你可以傳遞參數是這樣的:

process = subprocess.Popen(["python", "script2.py", "args"]) 
process.communicate() 

或沿着這些線路至少東西(這可能是錯誤的心中已經永遠不會調用POPEN一個Python)。我如何做到這一點是通過使用python線程模塊(所以這不會與上面描述的Popen一起工作,如果你想要一個特定的答案,我想看看這些腳本文件是怎麼樣的)。總之:

script1.py:

from threading import Thread 
from sources.script2 import prnt 
import time 

# 'Script1 function' 
def prnt1(): 
    for i in range(5000): 
     print('script1: %s' % i)  
     time.sleep(0.5) 

# Starting 'script2' 
t = Thread(target=prnt, args=(100, 4500)).start() 
prnt1() 

script2.py:上面的,如果我們不知道你要運行它很難給腳本什麼說

import time 

def prnt(start, stop): 
    for i in range(start, stop): 
     print('script2: %s' % i) 
     time.sleep(0.5) 

但是像諮詢。你的腳本是否有一個定義爲入口點的函數?或僅作爲獨立使用?,等...