Pythonでマルチプロセス処理を実行中、プログラムが終了しない。
Q&A
Closed
解決したいこと
画面の特定の座標を3秒に1回、永続的にクリックし続けるマクロを組んでいます。キーボード(エスケープキー)の押下を検知してプログラムを終了する機能を実装しようとしているのですが、プログラムが終了しません。お力添えいただければと存じます。
実行環境はWindows11、python3です。
発生している問題・エラー
エラーは特に出ていません。キーを押してもプログラムが終了しません。
該当するソースコード
StopSkip.py
import time
import MouseControll
import keyboard
from concurrent.futures import ProcessPoolExecutor
# クールタイム
time.sleep(3)
# クリック連打したい座標
coo = [832, 448]
# 実際にクリックプロセス
def myclick() :
while True :
# 座標を引数にとってクリックする関数
MouseControll.mouse_controll(coo)
# 3秒間隔で連打
time.sleep(3)
# ボタン待ち受けプロセス
def btn_detc() :
while True:
# ESCキーを押すまでクリックし続ける
if keyboard.read_key() == 'esc' :
############# 問題の箇所
# ここでプログラムを終了させたい
exit()
# マルチプロセス開始!!!
if __name__ == '__main__' :
with ProcessPoolExecutor(3) as executor :
executor.submit(myclick)
executor.submit(btn_detc)
Mousecontroll.py
import pyautogui
def mouse_controll(coo) :
pyautogui.click(coo[0], coo[1])
自分で試したこと
VScodeのデバッグを行い、ボタン待ち受けプロセスの挙動を見てみました。その結果、exit()
の行には問題なく到達しているようでした。しかし、exit()
を実行しても、プログラムは特に反応がなく動いたままでした。また、import sys
を実行後sys.exit()
に書き換えてみたりもしましたが、解決に至りませんでした。
どうぞよろしくお願いいたします。
0