Многопоточность в многопоточности python
У меня есть функция main.py, в которой такой код:
from concurrent.futures import ThreadPoolExecutor
def run():
with ThreadPoolExecutor(max_workers=3) as executor:
executor.submit(get_rate)
executor.submit(buff.run)
executor.submit(bot.run)
# executor.submit()
# executor.submit()
if __name__ == '__main__':
run()
Она в разных потоках вызывает две функции, которые запускают бота, а также другую функцию buff.
в buff.py:
def run():
print('efwefe')
lock_threading = threading.Lock()
with ThreadPoolExecutor(max_workers=5) as executor:
executor.submit(run_cost_guns_total_less_90, lock_threading)
executor.submit(run_cost_guns_total_more_90, lock_threading)
executor.submit(run_cost_knifes_and_hands, lock_threading)
executor.submit(run_cost_stickers, lock_threading)
executor.submit(run_cost_other_items, lock_threading)
У меня есть пять функций, которые нужно запустить каждую в своем потоке.
В свою очередь у каждой из пяти функций в buff, есть тоже создание потоков по типу:
def run_cost_knifes_and_hands(lock_threading):
while True:
knifes_and_hands = read_json('DataIds/knifes_and_hands.json')
futures = []
with ThreadPoolExecutor(max_workers=15) as executor:
for i in knifes_and_hands:
futures.append(executor.submit(get_cost_guns_total_less_90, i, lock_threading))
for future in as_completed(futures):
try:
future.result()
except Exception as exc:
print(f"Exception in thread {threading.current_thread().name}: {exc}")
traceback.print_exc()
Так вот, запускаю файл main.py, у меня загружается только до print('efwefe'), а дальше пусто, ничего не происходит вообще, как быть, как запустить из main.py данные потоки в buff.py.
Пробовал отдельно, просто использую файл buff.py, то запуская пять потоков этих, они запускали каждый свои потоки. Как-то так.