簡體   English   中英

使用多線程時內核死亡

[英]Kernel dies when using multithreading

我正在使用jupyter筆記本來計算多個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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM