线程:join()永远不会返回

时间:2017-08-13 00:56:29

标签: python multithreading

我正在尝试创建多个线程,将它们添加到列表中,遍历该列表并join每个线程如下:

threads = []
for i in range(0, 4):
    new_thread = threading.Thread(target=Runnable())
    new_thread.start()
    threads.append(new_thread)
for thread in threads:
    print("in thread")
    print(thread)
    thread.join()
    print("after join")

它将打印“在线程中”和线程,但它从不打印“加入后”,因为我的所有代码都没有运行。 Runnable()是我创建的一个函数,它也会打印它应该生成的函数,所以我不确定该代码是否与它有任何关系。

1 个答案:

答案 0 :(得分:2)

在创建每个Runnable实例时,您正在调用Thread,因此线程的target函数是它返回的任何内容(可能是None)。尝试使用:

new_thread = threading.Thread(target=Runnable)

其中target=Runnable代替target=Runnable()