Python多处理池没有将iterable作为参数

时间:2017-11-16 11:24:08

标签: python multiprocessing pool

我在这里阅读了很多关于multiprocessing.pool的帖子,但我仍然不知道代码中的问题在哪里。

我想在python中使用多处理池并行化一个函数。该函数接受一个参数并返回两个值。我希望这个参数是一个整数,并希望迭代这个整数。我已经尝试了我在这里看过的例子,但它对我不起作用(显然我做错了什么,但是什么?) 我的代码:

import multiprocessing
from multiprocessing import Pool

def function(num):
    res1 = num ** 2  # calculate someting
    res2 = num + num  # calculate someting
    return res1, res2


if __name__ == '__main__':
    num = 10

    pool = multiprocessing.Pool(processes=4)
    # next line works, but with [something,something,...] as an argument
    result = pool.map(function, [1, 100, 10000])
    # next line doesn't work and I have no idea why!
    result2 = pool.map(function, range(num))
    pool.close()
    pool.join()

    print(result2)

我在计算TypeError: 'float' object is not subscriptable时得到result2。 不胜感激求助!

0 个答案:

没有答案