Если я правильно понял, как работает модуль concurrent.futures
в Python 3, следующий код:
import concurrent.futures
import threading
# Simple function returning a value
def test(i):
a = 'Hello World\n'
return a
def main():
output1 = list()
with concurrent.futures.ThreadPoolExecutor() as executor:
# psdd iterator to test function
for out1 in executor.map(test, range(0, 10)):
# append returned result
output1.append(out1)
# confirm output
print(output1)
print("Task Executed {}".format(threading.current_thread()))
if __name__ == '__main__':
main()
... выполняет следующие функции:
- Передает для l oop в функцию, называемую
test()
. - Обрабатывает l oop параллельно, а не последовательно.
Однако, что я на самом деле Я хочу обработать l oop параллельно в моей функции main()
следующим образом:
import concurrent.futures
import threading
def main():
output1 = list()
with concurrent.futures.ThreadPoolExecutor() as executor:
# psdd iterator to test function
for out1 in executor.submit(range(0, 10)):
a = 'Hello World\n'
# append returned result
output1.append(a)
# confirm output
print(output1)
print("Task Executed {}".format(threading.current_thread()))
if __name__ == '__main__':
main()
... но это приводит к следующей ошибке:
Traceback (most recent call last):
File "G:\HTPC Scripts\WebGrab Plus\TESTTESTTEST2.py", line 221, in <module>
main()
File "G:\HTPC Scripts\WebGrab Plus\TESTTESTTEST2.py", line 209, in main
for out1 in executor.submit(range(0, 10)):
TypeError: 'Future' object is not iterable
Что делать Мне нужно изменить код?
Спасибо