import time
import pyaudio
def getAudioIndex(deviceName):
"""
get index of microphone
"""
p = pyaudio.PyAudio()
info = p.get_host_api_info_by_index(0)
numdevices = info.get('deviceCount')
MIC_DEVICE = 0
for i in range(0, numdevices):
if (p.get_device_info_by_host_api_device_index(0, i).get('maxInputChannels')) > 0:
i_index = i
name = p.get_device_info_by_host_api_device_index(0, i).get('name')
if name.find(deviceName) != -1:
print("found device, index: " + str(i_index) )
MIC_DEVICE = i_index
return MIC_DEVICE
pa = pyaudio.PyAudio()
stream = pa.open(format=pyaudio.paInt16,
channels=1,
rate=16000,
input=True,
frames_per_buffer=2048,
input_device_index=getAudioIndex('ReSpeaker 4 Mic Array'))
def read():
while True:
chunk = stream.read(2048)
print(chunk)
read()
Мои программы просто воспроизводят потоковое аудио и распечатывают данные. вот процессор, когда он запускается в основном потоке:
и когда я помещаю функцию в поток:
# read()
from threading import Thread, Event
thread = Thread(target=read, daemon=True)
thread.daemon = True
thread.start()
while True:
pass
это всегда 100% ?? ???
Может кто-нибудь помочь мне с этим? Я не могу понять, почему процессор перегружен в потоке. спасибо алоц