当不使用返回值时,python是否正在优化代码?

当不使用返回值时,python是否正在优化代码?,python,python-3.x,optimization,ximea,Python,Python 3.x,Optimization,Ximea,如果我有一个返回值的函数,比如ctypes中的string\u at(ptr,size),并且我不使用返回的字符串,那么对该函数的调用是否通过某种优化被删除?或者,性能的提高仅仅是因为应该返回的字符串从未真正复制到任何变量/其他内存地址,因此节省了复制时间 我试图理解这一点,因为我想以特定的帧速率从相机采集图像。但是,这个string_at(ptr,size)调用似乎正在减慢进程。但是,当我使用函数而不将返回值写入变量时,可以实现性能 有关相机和目标的更多信息: 西米亚8台同步工作的摄像机 图

如果我有一个返回值的函数,比如
ctypes
中的
string\u at(ptr,size)
,并且我不使用返回的字符串,那么对该函数的调用是否通过某种优化被删除?或者,性能的提高仅仅是因为应该返回的字符串从未真正复制到任何变量/其他内存地址,因此节省了复制时间

我试图理解这一点,因为我想以特定的帧速率从相机采集图像。但是,这个
string_at(ptr,size)
调用似乎正在减慢进程。但是,当我使用函数而不将返回值写入变量时,可以实现性能

有关相机和目标的更多信息:

  • 西米亚8台同步工作的摄像机
  • 图像从摄像头传输到ximea开关,然后通过PCI-e电缆从那里传输到PC
  • 图像以所需帧速率传输(每台摄像机100 fps)
  • 该集合当前在一个线程中工作,因为图像应在“同一”时间进行收集。因此,在每一个采集步骤中,都应该采集来自每个摄像头的图像
  • 当前达到的帧速率约为40 fps

您可以使用
来安全地忽略返回值。i、 e
,\ux=someFunc()
将忽略函数返回的2个值
\uu,\uvar=somefunc()
将忽略前2个值,并接受第三个值。您似乎期待着非常类似C的行为—一个强大的优化编译器和传递值语义。这不是在Python中得到的结果——几乎没有什么可以优化,但是如果没有显式的复制操作,几乎不会复制任何内容。特别是,返回一个对象不需要复制它。@user2357112supportsMonica是的,我想这是我在经历了帧速率的差异后得到的一些想法。所以,似乎复制没有发生,因为如果我不给出一个变量,就没有必要这样做。@AhmadAnis谢谢,我知道是这样的。我的问题更多地针对性能/时间差异。像user2357112supportsMonica所提到的一样,我仍然面临的问题是帧速率不令人满意。但是我似乎没有别的选择,只能使用
string\u at()
函数复制图像。当图像以所需的帧速率接收时,图像的缓冲区将被覆盖,速度比我使用此函数获取(并复制)图像的速度要快。但问题似乎不在于CPU(16核,使用率不超过50%),也不在于PCI-e连接,也不在于任何写入问题,因为我在那个阶段没有编写任何东西。那么,我能解决这个问题吗?内存另一个更快的功能?有什么建议吗?