You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python多进程Pool.map需求:仅获取函数返回的有效数据

解决方案

首先修正你的task函数里的变量名笔误(否则逻辑不成立):

from contextlib import suppress

def task(datetime):
    with suppress(Exception):
        offen_bool = IEX.open_at_time(offen_IEX, str(datetime), only_rth=True)
        if offen_bool:  # 原代码误写为open_bool,会导致逻辑错误
            return offen_bool
    # 无有效结果时默认返回None

然后在主进程中,直接过滤掉结果列表里的无效值即可,这是最适合新手的简单方案:

if __name__ == '__main__':
    df = getTable()

    with Pool(10) as pool:
        print("pool Start")    
        # 注意:原代码用了enumerate(df["Time"]),会把(索引, 时间)传给task,若不需要索引,直接传df["Time"]即可
        # 若确实需要索引,需把task的参数改为(idx, datetime)
        data = pool.map(task, df["Time"])
        # 过滤掉None、False这类无效结果
        valid_data = [item for item in data if item]
    # 最终的valid_data就是仅包含有效返回值的列表
    print(valid_data)

如果你的task可能返回0、空字符串这类你不想过滤的假值,只想排除None,可以把过滤条件改成if item is not None。


内容的提问来源于stack exchange,提问作者logn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 05:35:57