babyborn Asked:2020-05-07 20:59:54 +0000 UTC2020-05-07 20:59:54 +0000 UTC 2020-05-07 20:59:54 +0000 UTC 如何限制线程中的线程数 772 大家好!有一个代码: for line in friends: threading.Thread(target=messages, args=(line,)).start() 成功地向人们发送消息。问题出现了:如何限制线程数,例如朋友超过 50 行?以及是否有必要在工作后以某种方式关闭流? python 2 个回答 Voted Best Answer Sergey Gornostaev 2020-05-07T21:11:27Z2020-05-07T21:11:27Z 使用ThreadPoolExecutor: with ThreadPoolExecutor(max_workers=8) as executor: for line in friends: executor.submit(messages, line) eri 2020-05-08T02:57:15Z2020-05-08T02:57:15Z pool.map()最适合列表。模块中没有普通的线程池threading,但是模块中multiprocessing有Thread-s的接口。 from multiprocessing.pool import ThreadPool def messages(line): pass pool = ThreadPool(processes=8) results = pool.map_async(messages,friends) 流不需要关闭。如果它们在启动前没有保存在任何地方,它们将被 GC 删除。 Python 也有很好的旧线程。信号量
使用ThreadPoolExecutor:
pool.map()最适合列表。模块中没有普通的线程池threading,但是模块中multiprocessing有Thread-s的接口。流不需要关闭。如果它们在启动前没有保存在任何地方,它们将被 GC 删除。
Python 也有很好的旧线程。信号量