Python线程保留在多线程中

时间:2016-10-06 08:27:36

标签: python multithreading

为了总结我的问题,我制作了这个小程序,除了创建一系列打印东西并且应该自行销毁的线程之外什么都不做。

#!/usr/bin/env python

from time import sleep
from multiprocessing.pool import ThreadPool

def mythread(i):
    print 'i %s \n' % i
    sleep(1)

def start():
    i = 1
    while 1:
        pool = ThreadPool(processes=1)
        pool.apply_async(mythread, (i,))
        sleep(5)

# ----------------------
#          Main
# ----------------------

if __name__ == '__main__':
    start()

但是当我以test.py的名义运行这个程序时,命令 ps aux -T 来获取进程列表显示我没想到的东西。

10:04 azerty@3RMQP32 ~/Bureau $ ps aux -T | grep test | grep -v grep
azerty  9613  9613  0.2  0.0 322616  7520 pts/19   Sl+  10:04   0:00 python test.py
azerty  9613  9614  0.0  0.0 322616  7520 pts/19   Sl+  10:04   0:00 python test.py
azerty  9613  9615  0.0  0.0 322616  7520 pts/19   Sl+  10:04   0:00 python test.py
azerty  9613  9616  0.0  0.0 322616  7520 pts/19   Sl+  10:04   0:00 python test.py
azerty  9613  9617  0.0  0.0 322616  7520 pts/19   Sl+  10:04   0:00 python test.py

我预计第一秒的2个进程,主要和线程然后只有主要在睡眠。最后,一个线程每5秒会弹出1秒,然后立即自杀。但我没有观察到这一点。主进程生成4个子线程,永不死亡,5秒后, 创造了4个新的东西,直到我杀死所有东西。

如何确保至少子线程在到达其功能结束时自行完成。我无法加入(),因为我需要它来运行并持续启动线程。

谢谢,

0 个答案:

没有答案