'How can I use threads to get a better performance in python

I wrote a short code that just generate random numbers and allocate them in arrays. Is there a way to make the timers that I print be lower with threads?

Im relatively new in python so if you know how I would love for some pointers :)

import struct
import os
import time

import numpy as np

data_lines = 3000000

buff_x2 = np.random.rand(4 * data_lines)
buff_y2 = np.random.rand(4 * data_lines)
buff_z2 = np.random.rand(4 * data_lines)
buff_r2 = np.random.rand(data_lines)
buff_g2 = np.random.rand(data_lines)
buff_b2 = np.random.rand(data_lines)

start = time.time()
buff_x_breakdown = [buff_x2[i:i + 4] for i in range(0, 4 * data_lines, 4)]
buff_y_breakdown = [buff_y2[i:i + 4] for i in range(0, 4 * data_lines, 4)]
buff_z_breakdown = [buff_z2[i:i + 4] for i in range(0, 4 * data_lines, 4)]
buff_r_breakdown = [buff_r2[i] for i in range(0, data_lines, 1)]
buff_g_breakdown = [buff_g2[i] for i in range(0, data_lines, 1)]
buff_b_breakdown = [buff_b2[i] for i in range(0, data_lines, 1)]
end = time.time()
print(end - start)
xyz = np.zeros((data_lines, 3))
colors = np.zeros((data_lines, 3))

start = time.time()
for i in range(data_lines):
    xyz[i, 0] = buff_x_breakdown[i][0]
    xyz[i, 1] = buff_y_breakdown[i][0]
    xyz[i, 2] = buff_z_breakdown[i][0]

    colors[i, 0] = float(buff_r_breakdown[i]) / 255.0
    colors[i, 1] = float(buff_g_breakdown[i]) / 255.0
    colors[i, 2] = float(buff_b_breakdown[i]) / 255.0

end = time.time()
print(end - start)



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source