【发布时间】:2019-10-22 02:37:42
【问题描述】:
我对 python 还很陌生(而且堆栈溢出!),我从未使用过多处理。我目前有一个返回两个值的函数。这些值附加到不同的列表中。该函数有多个必需参数,其中一个来自 for 循环,请参见下面的示例代码。
代码有效,但功能很慢。我想为这个任务实现 MultiProcessing,但是我似乎无法让它基于一个池工作,因为我得到了多个返回值。
for x in list1:
(a, b) = function(x, y, z)
if a is not None:
list2.append(a)
if b is not None:
list3.append(b)
有人有什么建议吗?
【问题讨论】:
-
您能否发布导致您的代码失败/产生不良结果的 MP 代码?请注意,没有一个函数真的有多个返回值;您的函数返回一个 single 对象(我猜是您的元组),您将其解压缩为多个值。这在使用 MP 时不会引起任何问题。
-
感谢您的评论 - 我写的所有内容似乎都回到了基本地图:
(a,b) = p.map(function(x, y, z), range(len(list1)))然而,这缺少实际的列表值。当我将其放回 for 循环时:for x in list1: (a,b) = p.map(function(x, y, z), range(len(list1)))我因缺少 itterables 而收到错误 -
如果您想获得更详细的帮助,您可能应该在问题/cmets 中提供更准确的信息,例如
p是什么?我建议你看看:stackoverflow.com/help/minimal-reproducible-example -
谢谢我会做的,意识到我没有足够的信息但不想发布整个项目!
-
@LiamJordan 太多和太少一样糟糕
标签: python-3.x