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? для дополнительной информации.

Другие вопросы по тегам