Я пытался запустить пример сценария , и ни одно из моих усилий по редактированию для отладки не было успешным. Обратите внимание, что вторая f-строка ниже предназначена только для проверки модуля timeit и синтаксиса вызова. Это оператор печати работает нормально, но первый оператор печати над ним просто зависает (значок песочных часов в Atom.) Если я закомментирую первый оператор печати, сценарий будет выполнен с хорошим фрактальным графиком :-)
Возможно, я пропустили что-то очевидное?
Мое окружение: Win10 x64, Atom 1.45, скрипт 3.25, python 3.7.3
Заранее спасибо за ваши мысли ...
# Using numba and fractals (# With/without Numba)
# Libraries
import numpy as np
from numba import jit
from timeit import timeit
import matplotlib.pyplot as plt
from matplotlib.pylab import imshow, ion
# To use numba just add jit with a decorator
# @jit
# Create helper functions
def mandel(x, y, max_iters):
i = 0
c = complex(x, y)
z = 0.0j
for i in range(max_iters):
z = z*z + c
if (z.real * z.real + z.imag * z.imag) >= 4:
return i
return 255
def create_fractal(min_x, max_x, min_y, max_y, image, iters):
height = image.shape[0]
width = image.shape[1]
pixel_size_x = (max_x - min_x) / width
pixel_size_y = (max_y - min_y) / height
for x in range(width):
real = min_x + x * pixel_size_x
for y in range(height):
imag = min_y + y * pixel_size_y
color = mandel(real, imag, iters)
image[y, x] = color
return image
if __name__ == '__main__':
image = np.zeros((500 * 2, 750 * 2), dtype=np.uint8)
# Compare elapsed time between jit and @jit modes
print(f"Time for 'create_fractal' call: {timeit(stmt='create_fractal(-2.0, 1.0, -1.0, 1.0, image, 20)', setup='from __main__ import create_fractal, image')} seconds")
img = create_fractal(-2.0, 1.0, -1.0, 1.0, image, 20)
# print(f"Time for assignment: {timeit(stmt='img', setup='from __main__ import img, create_fractal'):.5f} seconds")
imshow(img)
plt.show()