我有一个游戏(使用 pygame),我想提高其性能。我注意到当我的 fps 较低时,游戏最多只使用 20% 的 CPU,有没有办法可以使用线程来使用更多的 CPU?
我已经尝试实现线程,但似乎运气不佳,将不胜感激。
此功能是导致滞后的原因:
第一版
def SearchFood(self):
if not self.moving:
tempArr = np.array([])
for e in entityArr:
if type(e) == Food:
if e.rect != None and self.viewingRect != None:
if self.viewingRect.colliderect(e.rect):
tempArr = np.append(tempArr, e)
if tempArr.size > 0:
self.nearestFood = sorted(tempArr, key=lambda e: Mag((self.x - e.x, self.y - e.y)))[0]
第二个版本(较慢)
def SearchFood(self):
if not self.moving:
s_arr = sorted(entityArr, key=lambda e: math.hypot(self.x - e.x, self.y - e.y))
for e, i in enumerate(s_arr):
if type(e) != Food:
self.nearestFood = None
else:
self.nearestFood = s_arr[i]
break
我查看整个实体列表,并在实体是食物以及与想要吃所述食物的事物的距离之后对其进行排序。问题是实体数组有 500 个元素(甚至更多),因此需要很长时间进行迭代和排序。然后为了弥补我想通过使用线程来利用更多的 CPU。
如果有帮助,这里是完整的脚本:https : //github.com/Lobsternator/Game-Of-Life-Esque.git
呼如林
当年话下
蓝山帝景
随时随地看视频慕课网APP
相关分类