Python线程不会终止

时间:2017-10-25 14:20:27

标签: python queue python-multithreading

我有一个调用运行线程的模块的程序。有时我想运行它几次并且线程似乎没有终止。由于它们没有终止,活动线程的总量最终会使我的程序崩溃。我搜索并跟踪了一些例子,但没有用。我对python很陌生,所以任何帮助都会受到赞赏。

这是主程序。该模块名为print_num.py:

import threading
from queue import Queue

q = Queue()

def print_me(num):
    print (num)

def threader():
    while True:
        worker = q.get()
        print_me(worker)
        q.task_done()

def main():

    for i in range (2):
        t = threading.Thread(target=threader)
        t.daemon = True
        t.start()

    for i in range (4):
        q.put(i)

    q.join()

    for thread in threading.enumerate():
       print('-->',thread.name)


if __name__ == '__main__':
    main()

然后我用这个模块运行程序:

import print_num

for i in range (3):
    print_num.main()

输出如下:

0
1
2
3
--> MainThread
--> Thread-1
--> Thread-2
0
1
2
3
--> MainThread
--> Thread-1
--> Thread-2
--> Thread-3
--> Thread-4
0
1
2
3
--> MainThread
--> Thread-1
--> Thread-2
--> Thread-3
--> Thread-4
--> Thread-5
--> Thread-6

我不明白为什么线程没有终止。第一次运行有主线程和另外两个,然后第二次运行有两个和两个,依此类推。如果我运行500次而不是3次,我的程序崩溃了。

0 个答案:

没有答案