powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как правильно писать потокобезопасный код (thread safe)
3 сообщений из 3, страница 1 из 1
Как правильно писать потокобезопасный код (thread safe)
    #38900629
Вот для примера такой код:

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    def __init__(self, ...):
        self.lock = threading.Lock()
        ...
        self._connect()

    def _connect(self):
        Connection = [HTTPSConnection, HTTPConnection][int(self.secret is None)]
        self.connection = Connection('api.vk.com')

    def request(self, ...):
        ...
        if self.lock:
            self.connection.request(method, path, data, headers)
            with self.connection.getresponse() as r:
                if r.status == 200:
                    ...



Может ли в отдельном потоке `self.connection.request()` быть вызван раньше чем прочитано тело предыдущего запроса (если отправить новый запрос раньше чем прочитать ответ на предыдущий будет брошено исключение `http.client.CannotSendRequest: Request-sent`)
...
Рейтинг: 0 / 0
Как правильно писать потокобезопасный код (thread safe)
    #38900630
И вопрос номер #2 если выигрыш от использования постоянного соединения в питоне? Например тот же urllib каждый раз создает новое (и добавляет заголовок "Connection: close\r\n").
...
Рейтинг: 0 / 0
Как правильно писать потокобезопасный код (thread safe)
    #38900631
Пример с ошибкой набросал

Код: python
1.
2.
3.
4.
5.
6.
7.
    def request(self, ...):
        ...
        with self.lock: # блокируем выполнение других потоков
            self.connection.request(method, path, data, headers)
            with self.connection.getresponse() as r:
                if r.status == 200:
                    ...



С уважением Ваш Академик Кадыров
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как правильно писать потокобезопасный код (thread safe)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]