多处理和线程太慢

问题描述 投票:0回答:1

我正在创建一个脚本来玩新的堡垒之夜节日模式(只是为了好玩,而不是试图打败除了我的朋友之外的任何人),虽然代码大部分工作正常,但它仍然偶尔会丢失注释。我相信这是因为代码运行速度减慢了游戏的速度。我在《吉他英雄》中看到过类似的东西,所以我认为 python 会足够快,但事实似乎并非如此。我尝试过线程和多处理,以及纯代码,但它们似乎都很慢。我正在使用 vscode 如果有帮助的话。

import pyautogui
import multiprocessing

run = True

def a():
    while run:
       if pyautogui.pixel(1010, 1150) [0] == 255:
            pyautogui.keyDown("d")
            pyautogui.keyUp("d")

def b():
    while run:
        if pyautogui.pixel(1200, 1150) [0] == 255:
            pyautogui.keyDown("f")
            pyautogui.keyUp("f")

def c():
    while run:
        if pyautogui.pixel(1400, 1150) [0] == 255:
            pyautogui.keyDown("j")
            pyautogui.keyUp("j")

def d():
    while run:
        if pyautogui.pixel(1560, 1150) [0] == 255:
            pyautogui.keyDown("k")
            pyautogui.keyUp("k")
if __name__ == '__main__':
    process_a = multiprocessing.Process(target=a)
    process_b = multiprocessing.Process(target=b)
    process_c = multiprocessing.Process(target=c)
    process_d = multiprocessing.Process(target=d)

    process_a.start()
    process_b.start()
    process_c.start()
    process_d.start()

    process_a.join()
    process_b.join()
    process_c.join()
    process_d.join()

我尝试过各种东西,包括 cython(我只是无法让它发挥作用)。我的代码可能有缺陷,我意识到存在一些计时问题,无法完美地击中音符,但是,它仍然缺少相当多的音符。当注释经过时,它似乎只是在代码的不同部分。请让我知道任何修复。

python python-3.x performance python-multiprocessing pyautogui
1个回答
0
投票

多处理: 多处理的效率取决于计算机中的内核和线程的数量。如果它是单核的单处理器,处理过程将与串行(一个接一个)地完成工作相同。此外,在执行过程中,如果打开的窗口数量较多,速度也会降低。含义:多处理的效率不仅仅取决于编码。这取决于计算机的处理器。仅当计算机中有不同的核心可用时,操作系统才能将进程拆分到不同的核心。

线程: 而python中的线程效率不高。因为python的线程不被视为两个不同的进程。线程给用户一种错觉,以为两个程序是并行执行的。例如,让我们假设一个例子:用户填写一个表单并提交,提交后用户需要在另一个表单中填写更多数据。现在提交第一个表单后,第一个表单的执行部分将在用户填写第二个表单的同时执行。这让用户认为执行速度更快。

© www.soinside.com 2019 - 2024. All rights reserved.