Python线程/ ThreadPool实现

时间:2016-12-28 14:19:56

标签: python multithreading threadpool python-multithreading

我有以下两个片段展示了线程的强大功能,并且想知道每个实现的区别是什么。

from multiprocessing.dummy import Pool as ThreadPool

def threadInfiniteLoop(passedNumber):
    while 1:
        print passedNumber

if __name__ == '__main__':
    packedVals={
        'number':[0,1,2,3,4,5,6,7,8,9]
    }
    pool = ThreadPool(len(packedVals['number']))
    pool.map(func=threadInfiniteLoop,iterable=packedVals['number'])

import threading

def threadLoop(numberPassed):
    while 1:
        print numberPassed

if __name__ == '__main__':
    for number in range(10):
        t = threading.Thread(target=threadLoop, args=(number,))
        t.start()

两个片段和每个线程的初始化之间有什么区别?一个人的利益是否超过另一个人,那么一个人比另一个人更适用的理想情况是什么?

1 个答案:

答案 0 :(得分:0)

当您想要创建一个永远运行的线程时,没有多大区别。

通常,当程序不断创建新的有限任务以在后台执行时,您使用线程池" (无论那意味着什么)。

创建和销毁线程相对比较昂贵,因此让少数线程长时间停留在一起更有意义,然后一遍又一遍地使用这些线程来执行后台任务。这就是线程池为你做的事情。

当你想要的只是一个永不终止的单个线程时,通常没有必要创建一个线程 pool