线程池类似于多处理池?

线程池类似于多处理池?

有工人用的游泳池吗?螺纹,类似于多处理模块的池类?

例如,我喜欢将映射函数并行化的简单方法。

def long_running_func(p):
    c_func_no_gil(p)p = multiprocessing.Pool(4)xs = p.map(long_running_func, range(100))

但是,我想在没有创建新进程的开销的情况下这样做。

我知道吉尔的事。但是,在我的usecase中,函数将是一个IO绑定的C函数,python包装器将在实际函数调用之前释放GIL。

我必须自己写线程池吗?


湖上湖
浏览 486回答 3
3回答

拉风的咖菲猫

我刚发现是中基于线程的池接口。multiprocessing模块,但是它是隐藏的,而且没有适当的文档。它可以通过from multiprocessing.pool import ThreadPool它是使用包装python线程的虚拟流程类实现的。这个基于线程的进程类可以在multiprocessing.dummy在博士..这个虚拟模块应该提供基于线程的整个多处理接口。

小怪兽爱吃肉

是的,而且它似乎有(或多或少)相同的API。import multiprocessingdef worker(lnk):     ....    def start_process():     .........if(PROCESS):     pool = multiprocessing.Pool(processes=POOL_SIZE, initializer=start_process)else:     pool = multiprocessing.pool.ThreadPool(processes=POOL_SIZE,                                             initializer=start_process)pool.map(worker, inputs)....
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python