gpt4 book ai didi

python - 使用 ThreadPool Python 时的最大池大小

转载 作者:太空宇宙 更新时间:2023-11-04 02:55:26 25 4
gpt4 key购买 nike

我正在使用ThreadPool 来实现多处理。使用多处理时,池大小限制应等于 CPU 内核数。我的问题 - 使用 ThreadPool 时,池大小限制应该是 CPU 核心数吗?

这是我的代码

from multiprocessing.pool import ThreadPool as Pool
class Subject():
def __init__(self, url):
#rest of the code
def func1(self):
#returns something
if __name__=="__main__":
pool_size= 11
pool= Pool(pool_size)
objects= [Subject() for url in all_my_urls]
for obj in objects:
pool.apply_async(obj.func1, ())
pool.close()
pool.join()

最大池大小应该是多少?提前致谢。

最佳答案

不能用线程进行多处理,只能实现多线程。由于 GIL,多个线程不能在单个 Python 进程中同时运行,因此多线程仅在它们运行 IO 繁重的工作(例如与 Internet 交谈)时才有用,因为它们会花费大量时间等待,而不是 CPU 繁重的工作(例如数学),它经常占据一个核心。

因此,如果您同时运行许多 IO 繁重的任务,那么拥有那么多线程将很有用,即使它超过了 CPU 内核的数量。大量的线程最终会对性能产生负面影响,但在您实际测量问题之前不要担心。大约 100 个线程应该没问题。

关于python - 使用 ThreadPool Python 时的最大池大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42541893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com