我写了一个代码,它应该接收一些图像并将它们变成黑白。我正在测量每个任务的响应时间(响应时间 = 接收到每个图像并变成黑白图像的时间)。这是代码: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、磁盘)。可能有数十个、数百个或数千个由操作系统管理的其他进程争夺资源。鉴于此,当您以亚秒级精度进行测量时,您极不可能看到在两次运行之间以完全相同的时间处理的相同图像。每次连续调用所需的时间可以(并且将会)上下波动。
添加回答
举报
0/150
提交
取消