为了账号安全,请及时绑定邮箱和手机立即绑定

某些任务的响应时间正在减少

某些任务的响应时间正在减少

qq_遁去的一_1 2021-09-02 20:21:30
我写了一个代码,它应该接收一些图像并将它们变成黑白。我正在测量每个任务的响应时间(响应时间 = 接收到每个图像并变成黑白图像的时间)。这是代码:from __future__ import print_functionimport signalsignal.signal(signal.SIGINT, signal.SIG_DFL)from select import selectimport socketfrom struct import packfrom struct import unpack#from collections import dequeimport commandsfrom PIL import Imageimport timehost = commands.getoutput("hostname -I")port = 5005backlog = 5BUFSIZE = 4096queueList = []start = []end = []temp = []def processP(q):    i = 0    while q:        name = q.pop(0)        col = Image.open(name)        gray = col.convert('L')        bw = gray.point(lambda x: 0 if x<128 else 255, '1')        bw.save("%d+30.jpg" % (i+1))        end.append(time.time())        #print(temp)        i = i + 1class Receiver:    ''' Buffer binary data from socket conn '''    def __init__(self, conn):        self.conn = conn        self.buff = bytearray()    def get(self, size):        ''' Get size bytes from the buffer, reading            from conn when necessary         '''        while len(self.buff) < size:            data = self.conn.recv(BUFSIZE)            if not data:                break            self.buff.extend(data)        # Extract the desired bytes        result = self.buff[:size]        # and remove them from the buffer        del self.buff[:size]        return bytes(result)    def save(self, fname):        ''' Save the remaining bytes to file fname '''        with open(fname, 'wb') as f:            if self.buff:                f.write(bytes(self.buff))            while True:                data = self.conn.recv(BUFSIZE)                if not data:                    break                f.write(data)现在出于某些评估目的,我多次发送单个图像。当我查看响应时间时,我发现有时第 8 个图像的响应时间比第 9 个图像的响应时间更长。所以我的问题是,由于处理每个图像所需的大小和时间都相同(我多次发送单个图像),为什么每个图像的响应时间是变量?下一个图像的响应时间不应该比前一个更长(或至少相等)(例如,第 4 个图像的响应时间 > 第 3 个图像的响应时间)?
查看完整描述

1 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

您的列表包含每个图像处理调用所花费的实际时间。这个值会受到很多因素的影响,包括当时系统的负载量。

当您的程序运行时,它不能独占访问它所运行系统的所有资源(cpu、ram、磁盘)。可能有数十个、数百个或数千个由操作系统管理的其他进程争夺资源。鉴于此,当您以亚秒级精度进行测量时,您极不可能看到在两次运行之间以完全相同的时间处理的相同图像。每次连续调用所需的时间可以(并且将会)上下波动。


查看完整回答
反对 回复 2021-09-02
  • 1 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信