np.savetext()/pd.to_csv 冻结虚拟机

问题描述 投票:0回答:1

我正在使用 VS Code 运行一个 python 脚本,该脚本正在处理一些数据并将其保存到 .csv 文件中。操作系统:Ubuntu 22.04.4 LTS,在 VMware Workstation 16 Player 中运行(主机:Win 10)。不幸的是,在某些保存中它使我的虚拟机陷入僵局。当我进入 Windows 任务管理器中的详细信息窗口时,它表示该进程处于死锁状态,并显示虚拟机的两个线程正在互相等待。

        csvDF = csvDF[csvDF.index < i + 1]
        cutAt = path.find("temperatures_matched")
        path = path[:cutAt] + path2TestCSV[i]
        #csvDF.to_csv(path, index = False)
        np.savetxt(path, csvDF, fmt = '%s', delimiter= ',', header="minTemp,maxTemp,mean,matchedThermalArray")
        #time.sleep(0.5)
        #csvDF = pd.DataFrame(array, columns = csvColumns)

我已经测试了保存并从 pd 的 to_csv() 切换到 np 的 savetext() 后的延迟,不幸的是没有成功。

有什么想法吗? 谢谢。

python pandas numpy deadlock
1个回答
0
投票

导致代码失败的原因可能有很多,可能是资源或 CPU 限制,我建议使用较小的块,以防您操作大文件。您可以尝试应用较小的块

to_csv
savetxt

import numpy as np
import pandas as pd
import os

# Example data
csvDF = pd.DataFrame({
    'minTemp': [1, 2, 3],
    'maxTemp': [4, 5, 6],
    'mean': [2.5, 3.5, 4.5],
    'matchedThermalArray': ['a', 'b', 'c']
})

path2TestCSV = ["file1.csv", "file2.csv", "file3.csv"]

for i in range(len(path2TestCSV)):
    csvDF_chunk = csvDF[csvDF.index < i + 1]
    cutAt = path2TestCSV[i].find("temperatures_matched")
    path = path2TestCSV[i][:cutAt] + path2TestCSV[i]

    # Ensure the directory exists
    os.makedirs(os.path.dirname(path), exist_ok=True)

    # Save using pandas to_csv
    csvDF_chunk.to_csv(path, index=False)

    # Alternatively, save using numpy savetxt
    # np.savetxt(path, csvDF_chunk.values, fmt='%s', delimiter=',', header="minTemp,maxTemp,mean,matchedThermalArray", comments='')

    # Optional delay to reduce load
    # time.sleep(0.5)
© www.soinside.com 2019 - 2024. All rights reserved.