потоковое чтение — асинхронное чтение файла строка за строкой

#python #multithreading #asynchronous

Вопрос:

У меня есть такой код. Который выполняет длинные функции асинхронно
Как запустить 10 потоков, дождаться завершения потоков и снова использовать 10 потоков для чтения txt-файла в long_running функции?

 from flask import Flask
import time
from threading import Thread

app = Flask(__name__)


@app.route('/')
def foobar_view():
    Thread(target=async_long_running, args=(app, 'works')).start()
    return 'Done!'


def async_long_running(app, msg):
    with app.app_context():
        long_running(msg)



def long_running(foo):
    print('parse domains start: {foo}')
    time.sleep(5)


app.run(host='localhost', port=5000)
 

Я раньше так делал

 import multiprocessing.pool as mpool

pool = mpool.ThreadPool(10)

file = open('C:\Users\Admin\Desktop\domains.txt', 'r')
lines = file.readlines()

for index, line in enumerate(lines):
    pool.apply_async(start, args=(line.strip(), ))

pool.close()
pool.join()
file.close()
 

Комментарии:

1. Используйте concurrent.futures.ThreadPoolExecutor .