2017-09-19 79 views
0

我有一個接收2個參數的函數。該功能實際上連接了某些通信設備,並在其CLI中寫入了多條線路。如何使用4對不同的參數同時運行相同的函數?

我需要在4個設備上同時執行相同的CLI寫操作。

通過使用下面的代碼(只有一個例子不引用func1的內容)我知道如何運行一個執行此功能的線程。但是,我不知道如何啓動4個線程。

import _thread 

def func1(arg1, arg2): 
    print("Write to CLI") 


_thread.start_new_thread(func1, (DUT1_CLI, '0')) 
+0

您可以在線程,例如下一行的新調用,只是寫: '_thread.start_new_thread(FUNC1,(DUT1_CLI, '0')) _thread.start_new_thread(FUNC1,(DUT2_CLI, '0')) ' 該差異將是 –

+0

在python中,如果任何名稱以下劃線開頭,則應避免使用它(在這種情況下,請導入該模塊)。看看這個問題的更多細節:https://stackoverflow.com/questions/1301346/what-is-the-meaning-of-a-single-and-a-double-underscore-before-an-object-名稱 – GPhilo

+0

考慮更改'_thread' for ['threading'](https://docs.python.org/2/library/threading.html) – GPhilo

回答

1

只需重複最後一行四次。

或者使用一個循環:

for _ in range(4): 
    _thread.start_new_thread(func1, (DUT1_CLI, '0')) 

線將開始一個新的線程也將開始在那一刻並行運行的每一個執行。所以你的四個線程可能會很快開始,然後產生輸出。根據緩衝區,終端類型等因素,這甚至可能導致混合輸出(在惡劣的情況下,兩個「Hello World」輸出可能會變成「HelHello Wlo Wororldld」)。

+0

太好了,工作正常。如果我理解正確,所有線程都會自動關閉,並且在完成任務後不再佔用資源。對 ? –

+0

這在技術上是一個新問題,但是。如果一個線程沒有更多的事情會終止。但是父線程應該'join()'這個線程。否則,一些內部數據結構將持續存在,並等待這一加入步驟的發生。如果你的整個過程終止,無論如何所有的線程都被清理乾淨。 – Alfe

+0

我可以使用相同的線程運行兩個函數(一個接一個)嗎?或者,我是否需要在相同的功能下收集這些任務才能完成此任務? –

相關問題