2016-05-12 74 views
0

我有一個python程序正在運行。它基本上不會連接並維持該連接,即程序不會再次輸入bash外殼,直到手動終止。類似下面,需要並行運行相同的python文件

bash-4.1$ python monitor.py 
CONNECTION MADE 
one done... 
two done... 
three done... 
. 
. 
. 

我想同monitor.py並行各種這樣ssh連接運行。他們都是彼此獨立的,不需要交換信息。我可以通過MultithreadingMultiprocessing來實現嗎?

+0

您可以多次運行monitor.py,或者可以使其成爲多線程,或者甚至可以派生多個子項。 – 2016-05-12 07:45:15

+0

多線程將是最好的這種情況下 –

回答

1

這裏是一個類似的例子中,使用多代替多線程(用於文檔,請參閱the official docs)。多線程處理與多線程非常相似,但它繞過了全局解釋器鎖定,因此允許您的腳本實際上同時運行不同的進程,並有可能更好地利用有限的計算資源。

進口多爲MP

def my_function(*args): 
    print("Arguments: {0}".format(args)) 


class MyProcess(mp.Process): 
    def __init__(self, target, args): 
     mp.Process.__init__(self, target=target, args=args) 

def main(): 
    a1 = MyProcess(target=my_function, args=("1st Process...",)) 
    a2 = MyProcess(target=my_function, args=("2nd Process...",)) 
    a3 = MyProcess(target=my_function, args=("3rd Process...",)) 
    a4 = MyProcess(target=my_function, args=("4th Process...",)) 

    proclist = [a1, a2, a3, a4] 
    for proc in proclist: 
     proc.start() 

    for proc in proclist: 
     proc.join() 

if __name__ == '__main__': 
    main() 

輸出:

Arguments: ('1st Process...',) 
Arguments: ('2nd Process...',) 
Arguments: ('3rd Process...',) 
Arguments: ('4th Process...',) 

雖然這些排在什麼似乎是一組指令,如果添加需要非確定性時間的任務,他們會按照他們完成的順序進來。只需用您的代碼替換my_function的內容,即可設置。 (注意:這是使用Python 2.在Python 3中,修改很少 - 也許沒有修改 - 但是如果你使用Python 3,你也應該調查concurrent.futures)。

+0

我試着用我的函數做ssh連接...這也可以...謝謝... ! :) – nidHi

1

您可以通過多個線程來實現您在問題中提到的內容。下面的代碼是Python中的多線程示例。試試你的文件。

import thread 
import time 

# Define a function for the thread 
def print_time(threadName, delay): 
    count = 0 
    while count < 5: 
     time.sleep(delay) 
     count += 1 
     print "%s: %s" % (threadName, time.ctime(time.time())) 

# Create two threads as follows 
try: 
    thread.start_new_thread(print_time, ("Thread-1", 2,)) 
    thread.start_new_thread(print_time, ("Thread-2", 4,)) 
except: 
    print "Error: unable to start thread" 

while 1: 
    pass 

輸出

Thread-1: Thu Jan 22 15:42:17 2009 
Thread-1: Thu Jan 22 15:42:19 2009 
Thread-2: Thu Jan 22 15:42:19 2009 
Thread-1: Thu Jan 22 15:42:21 2009 
Thread-2: Thu Jan 22 15:42:23 2009 
Thread-1: Thu Jan 22 15:42:23 2009 
Thread-1: Thu Jan 22 15:42:25 2009 
Thread-2: Thu Jan 22 15:42:27 2009 
Thread-2: Thu Jan 22 15:42:31 2009 
Thread-2: Thu Jan 22 15:42:35 2009 
+0

我試着用ssh連接...這個工程...謝謝:) – nidHi

相關問題