使用多线程时内核死机

斯蒂恩

我正在使用 jupyter notebook 来计算多个 csv 文件中某个值的出现次数。我有大约 60 个 csv 文件,每个大约 1GB 大。为了有效地循环它们,我使用了多线程。但是,每当我执行以下代码时,内核就会不断死亡:

from multiprocessing.dummy import Pool as ThreadPool 
files = glob.glob(path + '/*.csv')
def func(f):
    df = pd.read_csv(f)
    df = df[df['key'] == 1]
    return df['key'].value_counts()



pool = ThreadPool(4) 
results = pool.map(func, files)

pool.close() 
pool.join() 

results

这可能是什么原因?有没有办法解决这个问题?

冰川

您的代码中有两个问题。

  1. 对于 Python,您实际上是通过使用 multiprocessing.dummy 中的 Pool 来使用多线程而不是多处理。如果您想使用多处理,请更改为以下内容:

    from multiprocessing import Pool
    

    但是正如你提到的,有~60G的数据恐怕你的本地计算机无法处理这个?

  2. 我相信您需要一个强大的集群来完成这项任务(不再有大熊猫)。所以你可能需要考虑像 Spark 这样的东西。

    df = spark.read.csv(your_file_list, header=True)
    df = df.filter(df.Key == 1)
    df.head(5) # you can use df.collect() if the resultset if not too large
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用多线程时如何摆脱滞后

来自分类Dev

在启动时使用多线程?

来自分类Dev

在处理链表时如何使用多线程

来自分类Dev

使用Python多线程时的属性错误

来自分类Dev

使用Bitmap对象时,多线程无效

来自分类Dev

使用多线程时 GUI 仍然冻结

来自分类Dev

Linux内核会处理多线程吗?

来自分类Dev

从for循环更改为内核中的多线程

来自分类Dev

多线程随着更多内核而变慢

来自分类Dev

使用多线程时如何使用动画(application.class)

来自分类Dev

使用SendMessage()多线程

来自分类Dev

使用多线程计数?

来自分类Dev

多线程写入文件时,使用BufferReader读取文件

来自分类Dev

使用多线程时保护全局变量

来自分类Dev

使用 shared_ptr 在中断时结束多线程循环

来自分类Dev

运行 dask 计算时,jupyter 笔记本内核死机

来自分类Dev

使用多线程时如何避免重新创建线程

来自分类Dev

使用多个线程时,C语言中的多线程编程速度变慢

来自分类Dev

htop 在不使用多线程的情况下显示一个进程正在使用的多个内核

来自分类Dev

使用HDMI时系统完全死机

来自分类Dev

如何检测多线程使用?

来自分类Dev

使用bash进行多线程

来自分类Dev

使用多线程渲染图像

来自分类Dev

使用多线程滚动功能

来自分类Dev

多线程性能(使用Rust)

来自分类Dev

使用多线程登录iphone?

来自分类Dev

建议使用多线程方法

来自分类Dev

python中使用并行线程的多线程

来自分类Dev

在Qt中使用多线程时的事件循环和信号时隙处理