我正在Raspberry Pi 3中编写一个程序,使用函数发生器中的MCP3008 ADC读取输入。我想同时读取两个通道,然后将其写入文件。当我只有一个通道时,我每秒可以获得大约12000个采样,但是,当我有两个通道时,每个通道每秒可以获得大约6000个采样。为了每个通道每秒获得12000个样本,我尝试编写两个不同的脚本,每个通道一个,然后在两个不同的终端同时运行它们。但是,这并没有解决问题,每个频道每秒给我6000个样本。
当我只有一个脚本时,我的CPU使用率大约为9%。当我在两个不同的终端中同时运行两个脚本时,每个进程的CPU使用率约为5%。如何让每个进程分别使用9%或更高的CPU?
谢谢!
这是我的代码:
import spidev, time, os
# opens SPI bus
spi = spidev.SpiDev()
spi.open(0, 0)
#spi1 = spidev.SpiDev()
#spi1.open(0, 1)
ch0 = 0
#ch1 = 1
now = time.time() * 1000
data = open("test_plot.dat", "w")
#data1 = open("test_plot_1.dat", "w")
def getReading(channel):
# pull raw data from chip
rawData = spi.xfer([1, (8 + channel) << 4, 0])
# process raw data to something we understand
processedData = ((rawData[1]&3) << 8) + rawData[2]
return processedData
"""
def getReading1(channel):
# pull raw data from chip
rawData = spi1.xfer([1, (8 + channel) << 4, 0])
# process raw data to something we understand
processedData = ((rawData[1]&3) << 8) + rawData[2]
return processedData
"""
while True:
if (((time.time() * 1000) - now) < 10001):
data.write("%d\n" % getReading(ch0))
#data1.write("%d\n" % getReading1(ch1))
else:
break
# http://www.takaitra.com/posts/492