#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. В этом случае нет, их не было бы. Проблема возникает из-за того, что один экземпляр класса используется одновременно несколькими потоками.