Я пытаюсь создать изображение набора Мандельброта, но изображение занимает много времени. Код раздражающе медленный, поэтому, если вы можете помочь мне его ускорить, это будет очень полезно. благодаря. Обратите внимание, что код компилируется и запускается из моей IDE. Я новичок в многопроцессорности, так что, пожалуйста, сделайте это для меня немного глупее.
def daemon_summoner(r):
'''allows code to be restarted with different file if crash during super high res generation'''
t = Thread(target=process_job(r))
t.start()
def process_job(r):
"""creates a slice of the set"""
img = Image.new('1', size, color) # B&W image
print(int(r + 2*resolution100+1), 'of', int(resolution100 *3))
r = r * 100
for rval in range(100):
for i in range(-resolution, resolution, 1):
if abrot(((r + rval) / resolution), (i / resolution * 1j)):
try:
img.putpixel((rval, i + resolution,), 0)
except:
print(r, rval, i + resolution)
img.save(('z_images/' + str(resolution) + '/' + str(int(r/100)+int(resolution*.02)) + '.png'))
def abrot(x, y):
"""tests a point"""
c = (x + y)
z = 0 + 0j
for _ in range(5):
z = z * z + c
if abs(real(z*z+c))>=2and abs(imag(z*z+c))>=2:
return False
for _ in range(int(resolution / 10)):
if real(z + 0.0001) > float(real(z*z+c)) > real(z - 0.0001):
return True
z = z * z + c
if abs(real(z)) >= 2:
return False
return True






Итерации Мандельброта z * z + c могут потребоваться миллиарды операций для создания одного изображения, поэтому первым шагом к ее ускорению является удаление функции iterate_once и выполнение работы в оперативном режиме.