【问题标题】:Multiprocessing or Threading a for loop in PythonPython中的多处理或线程化for循环
【发布时间】:2021-01-27 09:07:26
【问题描述】:

我目前正在做一个需要帮助的项目。我正在研究一些大型图表,多年来我需要获取它们的一些属性。我正在考虑使用 Python 中的多处理或线程包。我有一个 for 循环,每年都会进行并生成一个 csv。我不确定如何并行化这个,你能帮我吗? 这是我的代码:

for year in tqdm(years):
    
    temp_df = df[df.label <= year]
    processed_df = id_df.copy()
    G = nx.DiGraph()
    G.add_edges_from(temp_df.iloc[:,:2].values.tolist())
    
    # Degree Centrality
    DegreeCentrality = degree_centrality(G)
    DegreeCentrality_df = pd.DataFrame(DegreeCentrality.items(), columns=['id', 'DegreeCentrality'])
    processed_df = pd.merge(processed_df, DegreeCentrality_df, how='left', on='id').fillna(0)
    
    del DegreeCentrality
    del DegreeCentrality_df
    gc.collect()
    
    # In Degree Centrality
    InDegreeCentrality = in_degree_centrality(G)
    InDegreeCentrality_df = pd.DataFrame(InDegreeCentrality.items(), columns=['id', 'InDegreeCentrality'])
    processed_df = pd.merge(processed_df, InDegreeCentrality_df, how='left', on='id').fillna(0)
    
    del InDegreeCentrality
    del InDegreeCentrality_df
    gc.collect()

   processed_df.to_csv('properties_{}'.format(year), index=False)

我的猜测是我应该将 for 循环中的所有内容都作为一个函数,并为不同的线程调用它。任何帮助将不胜感激,谢谢!

【问题讨论】:

    标签: python multithreading multiprocessing


    【解决方案1】:

    您可以将 for 循环中的所有代码添加到一个函数中,并使用 python 中的多处理库调用它。在这里查看:https://docs.python.org/3/library/multiprocessing.html

    【讨论】:

      猜你喜欢
      • 2013-04-13
      • 1970-01-01
      • 2016-03-31
      • 1970-01-01
      • 2018-06-15
      • 2021-02-23
      • 2022-01-16
      • 2016-12-15
      • 2020-09-25
      相关资源
      最近更新 更多