Does Blender support threading for data processing? One of the most time taking part while working with images in Blender is to get pixels to numpy arrays and then to assign them back. As Blender supports multi-thread render I've thought it could be possible to make an image processing faster using  concurrent.futures like this (the script adds 10 images, 10 numpy arrays and assigns arrays as images' pixels):

import bpy, concurrent.futures, time
import numpy as np

def test(counter, multi):
    t1 = time.perf_counter()
    x = 1920
    y = 1080
    px = x*y*4
    images = bpy.data.images
    counts = [i for i in range(counter)]
    all_images = []
    for i in counts:
        num = np.ones(px, dtype = 'f')
        name = 'imgtest_'+str(i)
        new = images.new(name, x, y)
        all_images.append(new)
    if multi:
        def pixels(img):
            img.pixels[:] = num[:]
        with concurrent.futures.ThreadPoolExecutor() as executor:
            executor.map(pixels, all_images)
    else:
       for img in all_images:
           img.pixels[:] = num[:]
    t2 = time.perf_counter()
    print(t2-t1)

test(10, True)
test(10, False)


But it gives almost no time benefit. Also I've tried to split pixels lists to slices and process them with threading, but it doesn't speed up processes as well. I've never used threading before. Am I doing something wrong here or does Blender just not support threading for such tasks?
First of all, Cycles render is an additional application with its own kernel, written in c/c++. It is ''glued'' to Blender by several Python scripts, well I think so.

Secondly, you can use Python modules like threading and multiprocessing to process data simultaneously. They are built-ins in Python interpreter, so there shouldn't be any problems if you'll decide to distribute your script.