gpt4 book ai didi

Python:使用映射和多处理

转载 作者:太空狗 更新时间:2023-10-30 00:59:23 24 4
gpt4 key购买 nike

我正在尝试编写一个可以接受两个参数的函数,然后将其添加到 multiprocessing.Pool 并对其进行并行化。当我尝试编写这个简单的函数时遇到了一些麻烦。

df = pd.DataFrame()
df['ind'] = [111, 222, 333, 444, 555, 666, 777, 888]
df['ind1'] = [111, 444, 222, 555, 777, 333, 666, 777]

def mult(elem1, elem2):
return elem1 * elem2

if __name__ == '__main__':
pool = Pool(processes=4)
print(pool.map(mult, df.ind.astype(int).values.tolist(), df.ind1.astype(int).values.tolist()))
pool.terminate()

返回错误:

TypeError: unsupported operand type(s) for //: 'int' and 'list'

我不明白这是怎么回事。任何人都可以解释这个错误的含义以及我该如何解决它吗?

最佳答案

多进程Pool模块接受一个你想要多进程的参数列表,并且只支持接受一个参数。您可以通过执行以下操作来解决此问题:

from multiprocessing import Pool
import pandas as pd

df = pd.DataFrame()
df['ind'] = [111, 222, 333, 444, 555, 666, 777, 888]
df['ind1'] = [111, 444, 222, 555, 777, 333, 666, 777]

def mult(elements):
elem1,elem2 = elements
return elem1 * elem2

if __name__ == '__main__':
pool = Pool(processes=4)
inputs = zip(df.ind.astype(int).values.tolist(), df.ind1.astype(int).values.tolist())
print(pool.map(mult, inputs))
pool.terminate()

我在这里所做的是将您的两个可迭代对象压缩到一个列表中,每个元素都是您想要输入的两个参数。现在,我更改函数的输入以解压缩这些参数,以便可以处理它们。

关于Python:使用映射和多处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41942250/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com