python - Python中的多处理或线程化for循环
问题描述
我目前正在做一个需要帮助的项目。我正在研究一些大型图表,尽管多年来我需要获取它们的一些属性。我正在考虑使用 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 中的多处理库调用它。在这里查看:https ://docs.python.org/3/library/multiprocessing.html
推荐阅读
- java - Map<> 中 entrySet() 上的 add() 方法
- python - 如何在Python中计算给定语料库的复数和单数数量
- c++11 - 类内初始化器到底是什么?
- php - WooCommerce 自定义字段 PHP 7 工作 PHP 7.1 和 7.2 不工作
- android - 向下滚动时 RecyclerView 列表消失了
- java - PhantomJS webdriver 无法加载 url
- javascript - JavaScript,Canvas:在本地保存时更改文件名
- reactivesearch - 在 Reactivesearch v2 中覆盖或删除内联样式
- excel - 如何使用 VBA 获取谷歌搜索的第一个搜索结果链接?
- angular - 为什么 *ngIf 和 [hidden] 在重新评估父 > 子属性绑定时的工作方式不同