如何增加我的Python程序的CPU使用率?

时间:2017-07-25 19:43:56

标签: python multiprocessing

我正在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

0 个答案:

没有答案