Я пытаюсь понять, как использовать модуль concurrent.futures
в Python 3.2.2, и играл с примерами из документации.Когда я пытаюсь применить свое понимание, мои собственные примеры терпят неудачу.Я надеюсь, что кто-нибудь может помочь мне встать на путь!
Я хочу иметь возможность настроить ряд процессов, работающих одновременно, но асинхронно.Мои процессы ничего не возвращают.Чтобы смоделировать это, я написал тривиальный пример:
import concurrent.futures
fred = [1,2,3,4,5,6,7,8,9,10]
def f(x):
print(x * x)
def main():
with concurrent.futures.ProcessPoolExecutor() as executor:
for num in fred:
executor.submit(f, num)
if __name__ == "__main__":
main()
Этот код работает (на 4-х ядерном Windows XP box) и возвращает:
1 4 9 16 25
... но потом зависает.
Я явно что-то делаю не так.Итак, как правильно запускать процессы Python в пуле процессов?Я не хочу использовать executor.map
подход, потому что у меня нет никакой отдачи от моего процесса.
Или ... нужно ли имитировать это, возвращая процессу True
или False
(или что-то в этом роде)?
Спасибо!