, когда я прочитал код Redis-ру (https://github.com/andymccurdy/redis-py/blob/master/redis/connection.py), я узнал, как это реализовать пул соединений, Но проблема догоняет меня, я не могу понять метод _checkpid()Что такое функция _checkpid в соединенииPool redis-py?
def _checkpid(self):
if self.pid != os.getpid():
with self._check_lock:
if self.pid == os.getpid():
# another thread already did the work while we waited
# on the lock.
return
self.disconnect()
self.reset()
простите меня, что я не может скопировать весь код пула соединений. вот мои мысли, когда он получает соединение из пула или релиза в пул, он будет проверять pid, я не понимаю, почему. если он работает в многопроцессорном режиме, ему не нужен замок , и он будет иметь много одинакового пула. и если он запускается в нескольких потоках, он всегда будет получать одинаковый pid. любая помощь согласуется.
Огромное спасибо за вашу помощь! Но я не могу придумать ситуацию, когда вилки будут происходить, почему мы должны развиваться, и, на мой взгляд, метод проверки может только предотвратить то, что вы сказали, не могли бы вы привести мне пример? – GuangshengZuo
@ user3013527 python не может использовать более одного процессора из-за GIL. Forking позволяет программам python использовать многоядерные машины. дополнительную информацию см. в модуле Multiprocessing в python. https://docs.python.org/3/library/multiprocessing.html –
СПАСИБО очень много за вашу помощь! – GuangshengZuo