если значения нулевые как мне надо то вроде можно использовать range хотя я не помню уже как. а если нужно заполнить случайными значениями типа random.randint. Количество значений примерно 16 миллионов. Не спрашивайте плз зачем мне это надо. Но надо. Как оптимизировать код чтобы выполнялось максимально быстро. А то если сделать чисто append в цикле то выполняется аж ~16 секунд пиздец как много.

Это все хуйня, как оказалось. В дивном питухоне есть такая штука, как thread, ровно как и везде, но с некоторым шармом: она не работает и нихуя не распараллеливает. Ну т.е. прямо-таки существует огромный кусок питухона, тонна документации и просто море гвнокода просто так. Поржать. Это пиздец. Вот правильный параллельный код, буст относительно оригинала под 1000%, это уже сравнимо с эталоном, всего в 3-4 раза медленнее:
#!/usr/bin/python3 from multiprocessing import Process, Array import random import time result = Array('L', [0] * 16000000, lock=False) threads = [0] * 4; def fasta(tid,result,rnd): for x in range (62500): bytes = rnd.randbytes(256) idx = 0 for n, i in enumerate(range(0, 256, 32)): k = tid*4000000+x*n+idx result[k] = int.from_bytes(bytes[i:i+4]) result[k+1] = int.from_bytes(bytes[i+4:i+8]) result[k+2] = int.from_bytes(bytes[i+8:i+12]) result[k+3] = int.from_bytes(bytes[i+12:i+16]) result[k+4] = int.from_bytes(bytes[i+16:i+20]) result[k+5] = int.from_bytes(bytes[i+20:i+24]) result[k+6] = int.from_bytes(bytes[i+24:i+28]) result[k+7] = int.from_bytes(bytes[i+28:i+32]) idx += 8 for tid in range(0, len(threads)): threads[tid] = Process(target=fasta, args=(tid,result,random.SystemRandom(random.randbytes(16)))) start_time = time.time() for t in threads: t.start() for t in threads: t.join() end_time = time.time() period = end_time - start_time print(len(result)*4/period/1024/1024*8, "Mbps") print(period, "seconds")