python - ProcessPoolExecutor 传递多个参数

标签 python

ESPNP 播放器免费

class ESPNPlayerFree:

def __init__(self, player_id, match_id, match_id_team):
...

团队列表1:
 [('277906', 'cA2i150s81HI3qbq1fzi', 'za1Oq5CGHj3pkkXWNghG'), ('213674', 'cA2i150s81HI3qbq1fzi', 'za1Oq5CGHj3pkkXWNghG')]

代码
 with concurrent.futures.ProcessPoolExecutor(max_workers=30) as executor:
    results = list(executor.map(ESPNPlayerFree, teamList1))

类型错误:__init__() missing 2 required positional arguments: 'match_id' and 'match_id_team'

最佳答案

编辑:

使用多处理池,您将使用 starmap()它将使用 start *将元组解包为参数

ESPNPlayerFree( *('277906', 'cA2i150s81HI3qbq1fzi', 'za1Oq5CGHj3pkkXWNghG') ) 
ESPNPlayerFree( *('213674', 'cA2i150s81HI3qbq1fzi', 'za1Oq5CGHj3pkkXWNghG') ) 

好像concurrent.futures.ProcessPoolExecutor没有 starmap()所以它将它作为一个参数发送 - tuple
ESPNPlayerFree( ('277906', 'cA2i150s81HI3qbq1fzi', 'za1Oq5CGHj3pkkXWNghG') ) 
ESPNPlayerFree( ('213674', 'cA2i150s81HI3qbq1fzi', 'za1Oq5CGHj3pkkXWNghG') ) 

你需要在函数内部解压它
def __init__(self, data):
    player_id, match_id, match_id_team = data

关于python - ProcessPoolExecutor 传递多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59095085/

相关文章:

python - 在 Flask Appbuilder View 中排序数据

python - 尝试在 Python 中检索事件监视器 ID

python - 当没有文本但也没有图像时,如何按像素调整 Tkinter Checkbutton 的大小?

python - 如何使用pyvis改变子图的颜色?

python - 如何改变 vim Python 缩进大小?

python - 如何通过代理通过 POP 或 IMAP 获取电子邮件?

python - 获取所有自定义标记的列表

python - 范围(1 :len(df)) assigns NaN to last rows in dataframe

python - 在 tkinter 上的同一窗口中绘制图形和表格

python - 在 headless chrome 中等待带有元素的网页时出现超时异常