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

能否在独立线程执行pd.df.to_csv?Pandas大数据并行处理问询

用线程分离实现并行处理与CSV保存

完全可以通过Python的threading模块实现你的需求,让主线程专注处理筛选后的行数据,异步线程后台执行耗时的CSV保存操作,避免阻塞主流程。

优化后的实现代码

import pandas as pd
import threading

# 生成示例DataFrame
df = pd.DataFrame({
    "col1": [x for x in range(10000)],
    "col2": [x**2 for x in range(0, 10000)]
})

# 一次生成筛选掩码,避免重复计算提升性能
mask = df["col1"] % 3 == 0
df_selected = df[mask]
df_unselected = df[~mask]

def save_to_csv(df: pd.DataFrame, file_path: str):
    # 执行CSV保存操作,这是子线程的核心逻辑
    df.to_csv(file_path, index=False)
    print("未选中数据已成功保存为CSV")

# 创建并启动子线程
save_thread = threading.Thread(target=save_to_csv, args=(df_unselected, "unselected_data.csv"))
save_thread.start()

# 主线程继续处理选中的数据
def all_other_handlings(df: pd.DataFrame):
    # 这里写你的主流程处理逻辑
    print(f"开始处理选中数据,共{len(df)}行")
    # 示例操作:计算col2的平均值
    avg_col2 = df["col2"].mean()
    print(f"选中数据col2的平均值为: {avg_col2}")

all_other_handlings(df_selected)

# 可选:如果需要等待保存完成再结束程序,可加入join()
# save_thread.join()
# print("所有操作完成")

关键说明

  • 性能优化:用一次掩码计算替代两次apply,大幅提升筛选效率,尤其在DataFrame数据量较大时效果明显。
  • 线程安全:由于子线程仅对df_unselected执行只读操作(写入CSV时不会修改数据本身),主线程也不会再修改该DataFrame,因此不存在线程安全问题。
  • 异步执行:子线程启动后会在后台运行,主线程无需等待保存完成即可继续处理业务逻辑,充分利用时间提升整体流程效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 09:24:59