Python 在多处理池中传递字符串列表时出错。starmap
我在尝试一些网络垃圾。我正在将一个包含URL的列表传递给pool.starmap,我遇到了一个错误。显示我的代码的简化版本: 有人能帮我吗? 如果我做了傻事,我也很抱歉Python 在多处理池中传递字符串列表时出错。starmap,python,python-3.x,Python,Python 3.x,我在尝试一些网络垃圾。我正在将一个包含URL的列表传递给pool.starmap,我遇到了一个错误。显示我的代码的简化版本: 有人能帮我吗? 如果我做了傻事,我也很抱歉 来自multiprocessing.dummy导入池 def func(x): 打印(x) s=[“猫”、“福”、“吧”、“你”、“和”、“我”]#此列表包含约50个实际代码的URL 使用Pool()作为池: pool.starmap(func,s) 这给了我一个错误: Traceback (most recent call
来自multiprocessing.dummy导入池
def func(x):
打印(x)
s=[“猫”、“福”、“吧”、“你”、“和”、“我”]#此列表包含约50个实际代码的URL
使用Pool()作为池:
pool.starmap(func,s)
这给了我一个错误:
Traceback (most recent call last):
File "g.py", line 8, in <module>
pool.starmap(func,s)
File "C:\Users\Gunjan\Anaconda3\lib\multiprocessing\pool.py", line 274, in starmap return
self._map_async(func, iterable, starmapstar, chunksize).get()
File "C:\Users\Gunjan\Anaconda3\lib\multiprocessing\pool.py", line 644, in get
raise self._value
File "C:\Users\Gunjan\Anaconda3\lib\multiprocessing\pool.py", line 119, in worker
result = (True, func(*args, **kwds))
File "C:\Users\Gunjan\Anaconda3\lib\multiprocessing\pool.py", line 47, in starmapstar
return list(itertools.starmap(args[0], args[1]))
TypeError: func() takes 1 positional argument but 3 were given
回溯(最近一次呼叫最后一次):
文件“g.py”,第8行,在
pool.starmap(func,s)
文件“C:\Users\Gunjan\Anaconda3\lib\multiprocessing\pool.py”,第274行,在星图返回中
self.\u map\u async(func,iterable,starmapstar,chunksize).get()
文件“C:\Users\Gunjan\Anaconda3\lib\multiprocessing\pool.py”,第644行,在get中
提升自我价值
文件“C:\Users\Gunjan\Anaconda3\lib\multiprocessing\pool.py”,第119行,在worker中
结果=(True,func(*args,**kwds))
文件“C:\Users\Gunjan\Anaconda3\lib\multiprocessing\pool.py”,第47行,在starmapstar中
返回列表(itertools.starmap(args[0],args[1]))
TypeError:func()接受1个位置参数,但给出了3个
您需要使用常规的映射()
尝试:
来自multiprocessing.dummy导入池的
def func(x):
打印(x)
s=[“猫”、“福”、“吧”、“你”、“和”、“我”]#此列表包含约50个实际代码的URL
使用Pool()作为池:
pool.map(func,s)
starmap()
要求列表中的每个元素本身都是一个iterable,并将内部iterable的元素args传递给func
您的元素是字符串,可以按字符划分,
所以第一个元素的星图叫做func('c','a','t')
,等等
以下是两个函数的定义+文档字符串:
def映射(self、func、iterable、chunksize=None):
'''
将'func'应用于'iterable'中的每个元素,并收集结果
在返回的列表中。
'''
返回self.\u map\u async(func、iterable、mapstar、chunksize).get()
def星图(self、func、iterable、chunksize=None):
'''
类似于'map()'方法,但'iterable'的元素应
也可以是iterables,并将作为参数解包。因此
`func`和(a,b)变成func(a,b)。
'''
返回self.\u map\u async(func,iterable,starmapstar,chunksize).get()
星图
需要一个iterables列表。检查因此,请改用map
。发布完整的工作示例代码来帮助您。