идентификатор потока gevent monkey_path - PullRequest
0 голосов
/ 02 декабря 2018
from gevent import monkey

monkey.patch_all()

import threading
import time


def printer():
    current_thread = threading.current_thread()
    print(current_thread.ident)
    # time.sleep(1)


if __name__ == '__main__':
    current_thread = threading.current_thread()
    print(current_thread.ident)
    threading.Thread(target=printer).start()
    threading.Thread(target=printer).start()
    threading.Thread(target=printer).start()

и результат:

140482707396456
140482679461960
140482679461960
140482679461960

Это ожидается, так как патч Gevent Monkey преобразует потоки в сопрограммы, которые имеют одинаковый идентификатор потока.Однако после раскомментирования time.sleelp все потоки меняются:

from gevent import monkey

monkey.patch_all()

import threading
import time


def printer():
    current_thread = threading.current_thread()
    print(current_thread.ident)
    time.sleep(0.1)


if __name__ == '__main__':
    current_thread = threading.current_thread()
    print(current_thread.ident)
    threading.Thread(target=printer).start()
    threading.Thread(target=printer).start()
    threading.Thread(target=printer).start()


140504830732136
140504802797640
140504802797896
140504802798152

Может кто-нибудь объяснить, почему?

...