我目前正在做一个项目,我需要帮助。我正在研究一些大的图,我需要在这些年里研究它们的一些性质。我正在考虑使用多处理或线程包从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循环中的所有东西都作为一个函数,并为不同的线程调用它。任何帮助将不胜感激,谢谢!
您可以将for循环中的所有代码添加到函数中,并使用python中的multiprocessing库调用它。点击这里查看:https://docs.python.org/3/library/multiprocessing.html