threading线程基础

基本使用start、join

import threading
import time


def wash_glass():
    print("开始洗碗")
    time.sleep(3)
    print("洗碗完成")

def wash_clothes():
    print("开始洗衣服")
    time.sleep(5)
    print("洗衣服完成")

def cook():
    print("开始做菜")
    time.sleep(3)
    print("做菜完成")

def main():
    s=time.time()
    print("开始做家务!")
    t1=threading.Thread(target=wash_glass)
    t2=threading.Thread(target=wash_clothes)
    t3=threading.Thread(target=cook)
    #任务开始
    t1.start()
    print('测试一下')#这里与协程不一样会被执行
    t2.start()
    t3.start()  

    #等待任务结束才会执行下面的语句
    t1.join()
    print('测试一下')#这里的代码需要洗碗函数执行完才会执行
    t2.join()
    t3.join()
    print(f'做完家务用时{time.time()-s}秒')
if __name__ == '__main__':
    main()

自动打分案例

说明:使用pyautogui进行自动化,并使用线程控制程序的中断与执行

import keyboard
import threading
# import sys
import random
import time
import pyautogui
def stop():
    global runner
    keyboard.wait('esc')
    runner=False
    

def auto_score():
    global runner
    # runner=True
    while runner:#runner为全局变量一开始为True,但是只要按下esc按键,runner就会变为False
        time.sleep(3)

        score=random.randint(80,90)
        # score=100
        try:
            score_location=pyautogui.locateOnScreen('./score.png')
            score_location1=pyautogui.center(score_location)
        except:
            print('找不到分数')
            continue
        pyautogui.moveTo(score_location1,duration=0.5)
        pyautogui.click(button='left')
        pyautogui.typewrite(f'{score}')
        try:
            # next_location=pyautogui.locateOnScreen('./next.png')
            # next_location1=pyautogui.center(next_location)
            next_location1=1995,1836
        except:
            time.sleep(1)
            continue
        pyautogui.moveTo(*next_location1,duration=0.5)
        pyautogui.click(button='left')

    
def main():
    global runner
    runner=True
    t1=threading.Thread(target=stop)
    t2=threading.Thread(target=auto_score)
    t1.start()
    t2.start()

    t2.join()
    t1.join()

    print("程序结束")
    
if __name__ == '__main__':    
    main()
posted @ 2025-04-03 23:20  CodeCraftsMan  阅读(20)  评论(0)    收藏  举报