我有一个调用运行线程的模块的程序。有时我想运行它几次并且线程似乎没有终止。由于它们没有终止,活动线程的总量最终会使我的程序崩溃。我搜索并跟踪了一些例子,但没有用。我对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次,我的程序崩溃了。