繁体   English   中英

Python线程/ ThreadPool实现

[英]Python Threading/ThreadPool implementation

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

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()

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM