Могут ли атрибуты экземпляра быть сброшены должным образом функцией, вызванной через ThreadPoolExecutor?

#python #multithreading #threadpoolexecutor

#python #многопоточность #threadpoolexecutor

Вопрос:

Я использую ThreadPoolExecutor.map() функцию для вызова метода в классе (расположенного в другом файле, я не думаю, что это важно). Вызов метода выполняется в том же экземпляре класса.

Мой вопрос: если метод использует переменные класса, которые сбрасываются до значений по умолчанию после завершения метода, останутся ли какие-либо значения, которые неправильно отображаются ThreadPoolExecutor функцией map?

Приведенный ниже код шаблона:

 import class2 from classFile2
from concurrent.futures import ThreadPoolExecutor

c2 = class2()
def eval(values):
    with ThreadPoolExecutor() as exe:
        iterator = exe.map(c2.method, values, timeout=0.5, chunksize=1)
  

Будет ли какое-либо несоответствие между iterator и c2.method(value) for value in values (не кодом, но понято концептуально), если c2.method используются переменные класса, которые сбрасываются?

Комментарии:

1. Что именно вы подразумеваете под «неправильно отображенным»?

2. Предположим, у меня есть values = [v1,v2] . Если r1 = c2.method(v1) , r2 = c2.method(v2) и result = [r1,r2] , равно ли это pool.map(c2,method, values, ..)

3. В этом случае нет, их не было бы. Проблема возникает из-за того, что один экземпляр класса используется одновременно несколькими потоками.