Python, вы можете передать функцию уровня модуля в ThreadPoolExecutor из класса
Я пытаюсь выполнить многопоточность в python, и я все еще пытаюсь разобраться с требованием к возможности выбора и насколько я могу сохранить свой код ООП.
Можете ли вы запустить ThreadPoolExecutor из класса, передав ему функцию, определенную на уровне модуля? Моя установка выглядит следующим образом:
moduleA.py:
def foo():
run some stuff
class bar(object):
def runThreads(self):
executor = futures.ThreadPoolExecutor(5)
executor.submit(foo) # do this 5 times in some sort of loop
Я хотел бы иметь возможность вызвать это из отдельного модуля
moduleB.py
from moduleA import bar
A = bar()
A.runThreads()
Будет ли это работать? Нужно ли мне импортировать foo?
1 ответ
Решение
foo
переменная находится на уровне модуля, в том же модуле, bar
определяется в. Ваш код должен работать нормально без импорта foo
, Смотрите краткое описание Scoping Rules? для дополнительной информации.