V_i*_*_er 4 python multithreading python-2.7
我有一个充满命令的数组,我想同时执行所有命令。
到目前为止,我有:
import threading
...
def MyThread0():
exec commandArray[0]
def MyThread1():
exec commandArray[1]
t1 = threading.Thread(target=MyThread0(), args=[]).start()
t2 = threading.Thread(target=MyThread1(), args=[]).start()
Run Code Online (Sandbox Code Playgroud)
如果只有两个线程,这可能仍然可以接受(至少它似乎可以工作),但如果 commandArray 的长度在运行时未知,则肯定不是。我如何有效地为 x 个线程执行此操作?
PS:这完全有可能是垃圾,因为我是多线程的新手。建设性的批评受到高度赞赏。
如果我正确理解你的问题,它应该是这样的:
import threading
...
command_array = ...
number_of_commands = len(command_array)
...
def run_the_command(index):
exec command_array[index]
threads = []
for i in range(number_of_commands):
t = threading.Thread(target=run_the_command, args=(i,))
t.start()
threads.append(t)
Run Code Online (Sandbox Code Playgroud)
注意:
run_it_boy而不是run_it_boy(),因为你现在不想调用它,而是让线程模块来做。snake_case函数/方法名和变量名,CamelCase用于类名。选择
在我看来,最好使用称为线程池的东西。