我正在使用线程库,并希望有一个线程来调用多个线程。这个程序的背景是,我有一个相机,它捕获图像并在TCP-SocketServer上提供类中的可用性。
因此,我需要一个线程来运行相机捕获,第二个线程来运行TCPServer,但在这个线程中,对于每个传入的连接,都有几个线程。
最后一个线程意味着我需要一个能够自己创建线程的线程。不幸的是,这并没有起作用。
我设法将庞大的代码分解成一个小片段,代表了问题。
在被调用为线程的函数
然而结果为空,为什么会这样呢?
这是我较大程序中出现的同样问题。
因此,我需要一个线程来运行相机捕获,第二个线程来运行TCPServer,但在这个线程中,对于每个传入的连接,都有几个线程。
最后一个线程意味着我需要一个能够自己创建线程的线程。不幸的是,这并没有起作用。
我设法将庞大的代码分解成一个小片段,代表了问题。
import threading
def adder(x,res,i):
res[i] = res[i] + x*i;
def creator(a,threads,results):
results = []
for i in range(0,a):
results.append(0)
threads.append(threading.Thread(target=adder,args=(a,results,i)))
threads[i].start()
for i in range(0,len(threads)):
threads[i].join()
return results;
threads = [];
results = [];
mainThread = threading.Thread(target=creator,args=([5,threads,results]))
mainThread.start()
mainThread.join()
for i in range(0,len(results)):
print results[i]
print threads[i]
在被调用为线程的函数
creator
中,应该使用函数adder
创建多个线程。然而结果为空,为什么会这样呢?
这是我较大程序中出现的同样问题。
.terminate()
) - 无论它们是否已经启动。请参见此处:https://dev59.com/wXRC5IYBdhLWcg3wW_pk - Tim Peters.stop()
方法 - 您编辑的代码现在应该会引发异常。请参见我已经提供的链接:Python不支持内置的强制停止线程的方法。 - Tim Petersstart
的返回值附加到threads
。 - user2357112mainThread
结束,所以实际的主线程全速前进,你可能在其他线程有机会启动之前就打印了results
。 - Tim Peters