#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
.