【附代码】Jupyter 多进程调用 seaborn 并保留格式
文章目录
- Jupyter 多进程的简单例子
- 文件目录
- 代码
- 运行结果
- Jupyter 多进程调用 seaborn(保留格式)
- 文件目录
- 代码
- 运行结果
Jupyter 多进程调用 seaborn 格式会和单进程使用不统一,本文将解决以上问题。
Jupyter 多进程的简单例子
Jupyter 中直接使用多进程可能会有诸多问题,推荐把 function 放在 .py文件里,然后在 Jupyter 中多进程调用。
文件目录
PythonProject
├─csdn_jupyter_multiprocessing
│ example_multiprocessing.ipynb
│ function.py
代码
# example_multiprocessing.ipynbfrom concurrent.futures import ProcessPoolExecutor
from tqdm import tqdm
from csdn_jupyter_multiprocessing.function import squareif __name__ == '__main__':with ProcessPoolExecutor(max_workers=2) as executor:results = list(tqdm(executor.map(square, [1, 2, 3, 4, 5]),total=5,desc="计算中",unit="任务"))print(results)
# function.pydef square(x):return x * x
运行结果
计算中: 100%|██████████| 5/5 [00:00<00:00, 92.59任务/s]
[1, 4, 9, 16, 25]
Jupyter 多进程调用 seaborn(保留格式)
核心思路是主进程中把 sns.axes_style()
传递到子进程。
文件目录
PythonProject
├─csdn_jupyter_multiprocessing
│ example_multiprocessing.ipynb
│ function.py
代码
# example_multiprocessing.ipynbfrom concurrent.futures import ProcessPoolExecutor
from tqdm import tqdm
from csdn_jupyter_multiprocessing.function import seaborn_example
import seaborn as snsif __name__ == '__main__':seaborn_style = sns.axes_style()with ProcessPoolExecutor(max_workers=2) as executor:list(tqdm(executor.map(seaborn_example, [('0.svg', seaborn_style), ('1.svg', seaborn_style)]),total=2,desc="计算中",unit="任务"))
# function.pyimport seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as npdef seaborn_example(args):save_name, seaborn_style = argssns.set_style(seaborn_style)# 创建示例数据:模拟某产品每日销售额days = np.arange(1, 31) # 1到30天sales = np.random.normal(loc=100, scale=15, size=30).cumsum() + 1000 # 模拟销售额趋势# 构建DataFramedata = pd.DataFrame({'Day': days,'Sales': sales})# 绘制基础线图sns.lineplot(data=data, x='Day', y='Sales')plt.savefig(save_name)plt.close()
运行结果
计算中: 100%|██████████| 2/2 [00:01<00:00, 1.66任务/s]