Показаны сообщения с ярлыком многопоточность. Показать все сообщения
Показаны сообщения с ярлыком многопоточность. Показать все сообщения

понедельник, 15 июля 2013 г.

Python многопоточность

Один поток всегда является главным и при его завершении, завершается программа.

Согласование потоков - семафоры.
Семафор — объект, позволяющий войти в заданный участок кода не более чем n потокам.
threading.BoundedSemaphore отличается от  threading.Semaphore тем что не даёт сделать release() больше чем сделан acquire()

threading.lock()
Для выполнения кода, поток должен захватит замОк. После выполнения замОк освобождается.

Атомарные операции безопасные для многопоточности:
  • чтение или изменение одного атрибута объекта
  • чтение или изменение одной глобальной переменной
  • выборка элемента из списка
  • модификация списка "на месте" (т.е. с помощью метода append)
  • выборка элемента из словаря
  • модификация словаря "на месте" (т.е. добавление элемента, или вызов метода clear)

понедельник, 8 октября 2012 г.

SQLite objects created in a thread can only be used in that same thread

Объект соединения с базой данных использовался во всех потоках. В итоге получал данную ошибку:
ProgrammingError: SQLite objects created in a thread can only be used in that same thread.The object was created in thread id -1220073264 and this is thread id -1233679472

Решение:
conn = sqlite3.connect('checker.db', check_same_thread=False)