質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PyAutoGUI

PyAutoGUIは、Windows、Mac OS、Linuxに対応した、Python用のGUI自動化ライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

5297閲覧

PyautoGUIを使ったキー入力後の「0.1秒」の遅延をなくしたいです。

Ayame2434

総合スコア0

PyAutoGUI

PyAutoGUIは、Windows、Mac OS、Linuxに対応した、Python用のGUI自動化ライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/11/01 21:15

前提・実現したいこと

キーボード入力で音楽を奏でるソフトにて自動演奏を行っているのですが、キー入力後の「0.100秒」の遅延が発生するものを極力なくせないかと思っております。

できればPhthon側の設定で変更できれば嬉しいのですが、他のパッケージをインストールして別のソースコードで遅延をなくせるなら教えていただきたいです。

どの種類のパッケージを使えば良いのか、できればサンプルコードがあればとても助かります。

該当のソースコード

import pyautogui
import time
import win32gui

pyautogui.hotkey('A','B')   ♯ここで0.100秒の遅延
time.sleep(0.100)
pyautogui.hotkey('A','B')   ♯ここで0.100秒の遅延
time.sleep(0.100)

pyautogui.typewrite('ABCDEFG', interval=0.050)     ♯ここで+0.100秒の遅延

pyautogui.hotkey('A','B')   ♯ここで0.100秒の遅延
time.sleep(0.100)
pyautogui.hotkey('A','B')   ♯ここで0.100秒の遅延
time.sleep(0.100)

pyautogui.typewrite('ABCDEFG', interval=0.050)     ♯ここで+0.100秒の遅延

試したこと

こちらのサイトを参考に「_pyautogui_osx.py」の設定で遅延の設定はすべてコメントアウトしました。

Windowsではできるかわからないと書いてありますし、コメントアウト前と後でも変わったようには感じませんでした。
0.01秒の遅延の設定であるのにも関わらず0.100秒の遅延が発生しているのであまり関係ないように感じております。

色々と調べたのですが、キーボードの自動化と高速というのは事務的な高速化という関連付けがされてしまっていて上記のサイト以外見つけることができない状態です。

補足情報(FW/ツールのバージョンなど)

OS:Windows10 Professional
ソフト:Python39

1分の曲のコード量と4分の曲のコード量では遅延の発生状況は変わりません。
ソースコードは1分の曲は300行~600行 4分の曲は2000行~4000行程です。
コード量などで遅延が変わっていないのとパソコン側でCPUやメモリの負荷が高いソフトを起動している時にも遅延の秒数は変わっていないのでPhthon側の設定で遅延にて発生してるものだと個人的には思っているのですが、どこを変更していいのかわからない状況です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2021/11/01 23:16

あちこちに time.sleep(0.100) を入れて0.1秒止めてますが、それに加えてさらに > キー入力後の「0.100秒」の遅延が発生 するのでしょうか?
Ayame2434

2021/11/02 05:12

わかりづらくすみません。 サンプルとして記載したのでそういうことになります。 「time.sleep」はリズムを作るために入れているもので本来は様々な数値になっています。 指定した秒数に全てプラスで「0.100秒」の遅延が発生しています。 「osx」がMacOSのことと教えて頂きありがとうございます。 各OSごとに設定があるとのことを教えていただいたので同じディレクトリ内を確認しましたところ「__init__」に # The number of seconds to pause after EVERY public function call. Useful for debugging: PAUSE = 0.1 # Tenth-second pause by default. という項目を見つけることができました。 すべての関数にPAUSEを設定していることと値が遅延の値と同じことだったのでこちらをPAUSE = 0.0 に変更したところ遅延がなくなりました。 大変助かりました。ありがとうございます。
guest

回答2

0

python

1pyautogui.PAUSE = 秒数

デフォルトは0.1秒

参考
PyAutoGUIの設定をする
How to increase number of clicks per second with pyautogui?

投稿2021/11/02 05:18

jbpb0

総合スコア7653

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

「_pyautogui_osx.py」のあるディレクトリ内の「init」の下記のように変更したところ遅延がなくなりました。

# The number of seconds to pause after EVERY public function call. Useful for debugging: PAUSE = 0.1 # Tenth-second pause by default.

という項目があるのでこちら

# The number of seconds to pause after EVERY public function call. Useful for debugging: PAUSE = 0.0 # Tenth-second pause by default.

投稿2021/11/02 05:16

Ayame2434

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2021/11/02 05:21

そのファイルを書き換えたら、アップデートの時に設定消えるかもしれません 私の回答のようにコード中で「pyautogui.PAUSE = 秒数」とした方が、安全ですよ
melian

2021/11/02 05:21

pyautogui のソースコードファイルを直接変更すると、pyautogui をバージョンアップした時に上書きされて元に戻ってしまいます。 自身で書かれたソースコード内で pyautogui.PAUSE = 0.0 とする方が良いのではないでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問