2017-09-19 74 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

我可以使用相同的线程运行两个函数(一个接一个)吗?或者,我是否需要在相同的功能下收集这些任务才能完成此任务? –

相关问题