#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Fri Oct 11 08:36:47 2019 @author: suwako """ #from functools import lru_cache import gc import matplotlib.pyplot as plt import matplotlib.image as mpimg import numpy as np from PIL import Image from tqdm import tqdm from threading import Thread from multiprocessing import Pool, Process """n=20 liste = [[[1,1,255] for j in range(n)] for i in range(n)] fig = np.array(liste) plt.imshow(fig) plt.show()""" #@lru_cache(maxsize=512) def xn(n, c): if n==0: return 0 else: return xn(n-1, c)**2 + c def feigenbaum(n=1000): l=[] for c in tqdm(np.linspace(-2, 0, num=n), ncols=100): for k in range(200, 301): l.append([c, xn(k, c)]) ordo = [p[1] for p in l] absci = [p[0] for p in l] plt.plot(absci, ordo, 'ro', ms=100/n) plt.show() def zn(n, c): if n==0: return 0 else: return zn(n-1, c)**2 + c def mandelbrot(n=512, lim=100, color=(1,5,2)): mat=[] for y in tqdm(np.linspace(-2, 2, num=n), ncols=100): l=[] for x in np.linspace(-2,2, num=n): """for k in range(lim): a=zn(k, complex(x,y)) if abs(a) > 2: break""" k = zn2(complex(x,y), lim) # l.append([((k*color[0])%255),(k*color[1]*5)%255,(k*color[2]*2)%255]) l.append([x,y]) mat.append(l) fig = np.array(mat) img = Image.fromarray(fig.astype(np.uint8), 'RGB') img.save('test.png') img.show() def mandeld(n=512, lim=100, color=(1,5,2), threads=5, window=[(-2,2),(-2,2)], filename="test.png"): args=(n, lim, color) tasks=np.array_split(np.linspace(*window[0], num=n), threads) results=[[] for i in range(threads)] """ threads=[mandelThread(tasks[i], args, i) for i in range(threads)] for thread in threads: thread.start() for thread in threads: thread.join()""" p = Pool(threads) results=p.map(mandelWorker, [(tasks[i], args, i, window) for i in range(threads)]) mat = [j for i in results for j in i] # mat = results[0] fig = np.array(mat) img = Image.fromarray(fig.astype(np.uint8), 'RGB') img.save(filename) del tasks del results del mat del p del fig del img import time def Time(func, *args, **kwargs): start_time = time.clock() res = func(*args, **kwargs) print(time.clock() - start_time, "secondes") return res def mandelWorker(data): taches, args, thread, window = data #print("Thread", thread, "running.") def zn2(c, lim): z=0 k=0 while k