Python несколько графиков с использованием многопроцессорных, пустых графиков - PullRequest
0 голосов
/ 09 апреля 2020

создание параллельных графиков: я пытаюсь сделать графики параллельными, используя функцию. Когда попробуйте карту (parallel_plot, [data_1, data_2]), это работает. Но в сочетании с многопроцессорным использованием рисунок был пустым. Рисунок был результатом следующего кода . Фактическая цифра должна выглядеть следующим образом -> с использованием карты (parallel_plot, [data_1, data_2]) . Я хотел бы знать, почему значения не отображаются при использовании многопроцессорного пула?

import numpy as np
import matplotlib.pyplot as plt
from multiprocessing import Pool
from multiprocessing import Process

def plot_something(data, ax=None, **kwargs):
    ax = ax or plt.gca()
    # Do some cool data transformations...
    return ax.plot(data, **kwargs)
#---
def parallel_plot(data):
    plot_something(data)

# make some data:
data_1 = np.random.normal(0,1,500)
data_2 = np.random.normal(0,1.1,500)
#--
fig, ax = plt.subplots(1)
p=Pool(2)
p.map(parallel_plot,[data_1,data_2])
p.terminate()
plt.savefig("parallel_plot.png")

1 Ответ

0 голосов
/ 10 апреля 2020

Благодаря тому, как работает multiprocessing, вы фактически рисуете на двух отдельных фигурах (параллельные процессы, выполняющиеся parallel_plot) и отбрасываете результат, возвращаясь к основному процессу.

Вы должны перейти

ax = ax or plt.gca()

в основной процесс и разделите эту переменную между параллельными процессами, строящими график.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...