Это приводит к тому, что функция psutil.net_connections() выполняется медленно. Мне нужно подождать около 1 минуты, чтобы получить результат.
Код: Выделить всё
import psutil
import time
import threading
pid = os.getpid()
proc = psutil.Process(pid)
exit = False
def MyThread1():
while True:
if exit == True:
break
# time.sleep(1)
t1 = threading.Thread(target=MyThread1, args=[])
t1.start()
connections = psutil.net_connections()
for con in connections:
print(con.laddr.port)
exit = True
t1.join()
Код: Выделить всё
File "/home/mz/pyenv/lib/python3.11/site-packages/psutil/_pslinux.py", line 215, in readlink
path = os.readlink(path)
^^^^^^^^^^^^^^^^^
KeyboardInterrupt
^CException ignored in:
Traceback (most recent call last):
File "/usr/lib/python3.11/threading.py", line 1590, in _shutdown
lock.acquire()
KeyboardInterrupt:
Затем я начал читать документацию по потоку Python, и нет никакой информации о том, как работает планировщик. Я читал, что он переключает контекст задачи каждые 100 байт-кодов (Как Python обрабатывает блокировку потоков/переключение контекста?).
Для меня это было неожиданностью, но все равно я до сих пор не могу понять, почему он так себя ведет. Можете ли вы помочь мне понять этот случай? Моя версия Python — Python 3.11.9.
Подробнее здесь: https://stackoverflow.com/questions/793 ... oop-thread