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
Может кто-нибудь объяснить, почему?