[英]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.