ZIK1337
@ZIK1337

Как с помощью pymysql работать в многопотоке?

Допустим работает 200 потоков, соединение устанавливаю в основном потоке и передаю его дочерним.
Нужно, чтобы в конце работы каждого потока (данные зависят от вычислений в потоке) шла запись одной строки в БД через это переданное соединение.
Но это не выходит сделать, вроде как соединение pymysql нельзя в потоки передавать, но и в каждом потоке коннектиться к БД - тоже нельзя.

Как тогда можно реализовать задачу?
  • Вопрос задан
  • 212 просмотров
Пригласить эксперта
Ответы на вопрос 3
@dmtrrr
Backend developer
Какую проблему вы пытаетесь решить?
Можно сделать так, чтобы каждый поток отправлял результат своей работы в основной поток, а тот уже писал в БД.
Ответ написан
Комментировать
@ArtiomK
Соединения с базой данных можно создавать только в потоке, один поток - одно активное соединение . В Python GIL не позволит сделать вычисления быстрее за счёт многопоточности, если нужны именно вычисления используйте multiprocessing. Если не нужны вычисления рассмотрите asyncio как альтернативу multithreading.
Ответ написан
@bbkmzzzz
еще один поток, который работает с базой, и слушает очередь, потоки воркеры пишут в очередь, поток с базой пишет в базу
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы