"在Java中使用多进程池是被鼓励的吗?我正在将这段Python代码转换为J"

2024-06-16 11:02:19 发布

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

Python代码-使用多处理池并映射字符串数组。对于数组中的每个项,使用分部函数调用回调函数:

p = multiprocessing.Pool(1)
p.map(functools.partial(callback_function,
                            arg1 = arg1,
                            arg2 = arg2,
                          ), array_string_items)

我正在尝试用Java做类似的事情。我在javaapi中看不到任何像上面的Python代码那样简单的东西。在

1)是否更鼓励使用线程而不是处理器池? 2) 如果是这样的话,我将如何实施这一点?在

谢谢


Tags: 函数字符串代码mapcallbackfunction数组multiprocessing
2条回答

您的Python示例在Java中如下所示:

stringList.parallelStream()
    .map((str) -> callbackFunction.apply(arg1, arg2, str));

假设callbackFunction有三个参数,并对其应用常量arg1、arg2参数以使其部分化。在

可以显式定义部分函数:

^{pr2}$

然后流处理变得非常简单:

^{3}$

Java8 streams与您的示例类似:

Integer ageSum = persons
.parallelStream()
.reduce(0,
    (sum, p) -> {
        System.out.format("accumulator: sum=%s; person=%s\n", sum, p);
        return sum += p.age;
    },
    (sum1, sum2) -> {
        System.out.format("combiner: sum1=%s; sum2=%s\n", sum1, sum2);
        return sum1 + sum2;
    });

对于定制的runnables/callables,这个解决方案在我看来也和Python一样简单:

^{pr2}$

相关问题 更多 >