星图与TQM结合?

2024-04-18 12:15:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在进行一些并行处理,如下所示:

with mp.Pool(8) as tmpPool:
        results = tmpPool.starmap(my_function, inputs)

输入如下: [(1,0.2312),(5,0.52)…] i、 整数和浮点的元组。在

代码运行得很好,但我似乎无法将其包装在加载条(tqdm)中,例如,可以使用imap方法来完成,如下所示:

^{pr2}$

星图也可以做吗?在

谢谢!在


Tags: myaswithfunction整数mpresults浮点
2条回答

使用starmap()是不可能的,但是可以使用添加Pool.istarmap()的补丁。它基于imap()的代码。您只需创建istarmap.py-文件并导入模块以应用补丁,然后再进行常规的多处理导入。在

# istarmap.py
import multiprocessing.pool as mpp


def istarmap(self, func, iterable, chunksize=1):
    """starmap-version of imap
    """
    if self._state != mpp.RUN:
        raise ValueError("Pool not running")

    if chunksize < 1:
        raise ValueError(
            "Chunksize must be 1+, not {0:n}".format(
                chunksize))

    task_batches = mpp.Pool._get_tasks(func, iterable, chunksize)
    result = mpp.IMapIterator(self._cache)
    self._taskqueue.put(
        (
            self._guarded_task_generation(result._job,
                                          mpp.starmapstar,
                                          task_batches),
            result._set_length
        ))
    return (item for chunk in result for item in chunk)


mpp.Pool.istarmap = istarmap

然后在你的剧本里:

^{pr2}$

临时解决方案:重写要与imap并行的方法。在

相关问题 更多 >