为了账号安全,请及时绑定邮箱和手机立即绑定

线程池类似于多处理池?

线程池类似于多处理池?

湖上湖 2019-06-13 17:13:55
线程池类似于多处理池?有工人用的游泳池吗?螺纹,类似于多处理模块的池类?例如,我喜欢将映射函数并行化的简单方法。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。我必须自己写线程池吗?
查看完整描述

3 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

我刚发现中基于线程的池接口。multiprocessing模块,但是它是隐藏的,而且没有适当的文档。

它可以通过

from multiprocessing.pool import ThreadPool

它是使用包装python线程的虚拟流程类实现的。这个基于线程的进程类可以在multiprocessing.dummy博士..这个虚拟模块应该提供基于线程的整个多处理接口。


查看完整回答
反对 回复 2019-06-13
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

是的,而且它似乎有(或多或少)相同的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)....


查看完整回答
反对 回复 2019-06-13
  • 3 回答
  • 0 关注
  • 485 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信