Я полагаю, что 'fig', который вы передаете в apply_async, в этом случае становится копией, а не указателем на изначально созданный объект 'fig', здесь происходит то, что каждый процесс сохраняет (из своей собственной копии fig) тестирование.JPG с только его собственными построенными данными из
plt.plot(a, b, 'ro')
И тот, который вы видите, это процесс, который завершается последним.
Это важно, что вы делаете это в отдельных процессах?что-то настолько простое, что это было бы лучше построить в виде простого цикла.
Если, однако, вам нужно выполнить тяжелые вычисления в пуле, вы можете сохранить результаты в многопроцессорной обработке. Массив, который позволяет записывать данные из всех дочерних процессов, и который впоследствии может быть использован в родительском процессе.Таким образом, вы можете нанести на график одну фигуру в родительском процессе, которая проста, но все же имеет преимущество быстрых параллельных вычислений
import matplotlib
matplotlib.use('agg')
from multiprocessing import Pool, Array
import matplotlib.pyplot as plt
def f111(i, a, b, arr_a, arr_b):
calc_value_a = a * 2
calc_value_b = b * 2
arr_a[i] = calc_value_a
arr_b[i] = calc_value_b
if __name__=='__main__':
fig=plt.figure(figsize=(20,10))
arr_a = Array('i', range(8))
arr_b = Array('i', range(8))
p=Pool(8)
for i in range(8):
p.apply_async(f111, args=(i, 1+i*6, 6+i*6, arr_a, arr_b))
p.close()
p.join()
plt.plot(arr_a, arr_b, 'ro')
plt.show()