SlideShare a Scribd company logo
Pythonでブラウザをいっ
ぱい動かしたい
2021-10-16 kame-chan
自己紹介
- kame-chanです。@okusama27
- 普段は株式会社BeProudでPython学習サービスPyQの開発・管理・運用・保守と
かいろいろをやってます。
- PyLadies Tokyoスタッフやってます。
アジェンダ
- Pythonでブラウザをいっぱい動かしたい理由
- ざっくり並列処理とは?
- 実演
- thredingで書いてみた
- concurrent.futuresで書いてみた
- acync/awaitって美味しいの?
- これから調べたいこと
Pythonでブラウザをいっぱい動かしたい理由
● リリースの度に約1,700問の問題をブラウザ上で実行しているから。
○ 実行に1問1分くらいかかる。
○ 1問を実施するのに「表示」「実装」「実行」「判定」「結果表示」の 5工程がある
○ 普通に手動で実行すると 28時間!1日8時間勤務だと3.5日。
○ 問題が少ないときは手動で実行していたが、現在は seleniumで自動化。
そうだ!1つのプログラムで
複数のブラウザを動かそう!
Pythonにもある気がする並行処理
- ざっくりいうと、同時にいくつかの処理を
実行すること。
- 上から順に書くと、プログラムは上から
順番に実行する。
- 処理1が終わったら処理2を開始、処理
2が終わったら処理3を開始という順序
で動く。
- Pythonにはいくつか処理を平行に実施
できる手段が用意されています。
実装してみました
threading
for i in range(5):
if threading.active_count() >= 2:
time.sleep(5)
continue
thread = threading.Thread(target=run_browser, args=(i,))
thread.start()
time.sleep(2)
現状では、優先度 (priority)やスレッドグループがなく、スレッドの破壊 (destroy)、中断 (stop)、一時停止 (suspend)、復帰 (resume)、割
り込み (interrupt) は行えません。 (Python公式ドキュメント)
concurrent.futures
with futures.ThreadPoolExecutor(max_workers=2) as executor:
for i in range(5):
future = executor.submit(run_browser, i)
time.sleep(2)
max_workersで起動数の制御ができる。
非同期実行は ThreadPoolExecutor を用いてスレッドで実行することも、
ProcessPoolExecutor を用いて別々のプロセスで実行することもできます.
asyncio
loop = asyncio.get_event_loop()
gather = asyncio.gather(run_browser(1), run_browser(2), run_browser(3))
loop.run_until_complete(gather)
asyncio は async/await 構文を使い 並行処理の コードを書くためのライブラリです。
Javascript(React?)界隈で流行って、Python3.5でasync 構文と await 構文が追加さ
れたっぽいです。
これから
- 以下を調べたい
- いろいろ方法があるけど、どれがいいの?
- concurrent.futuresのいいところは?
- async/awaitを使ったほうがいい状況を知りたい
- async/awaitをがっつり学べるPythonの書籍があれば知りたい。なければ、
Reactの本?

More Related Content

PDF
ExcelとPythonによる社会インフラシステムの設定ファイルの自動生成
PDF
Pythonでの開発を効率的に進めるためのツール設定
PDF
テストを書こう、Unity編
PDF
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
PPTX
Behat Driven Development
PDF
書こう! 使おう! 単体テスト
PPTX
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
PDF
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
ExcelとPythonによる社会インフラシステムの設定ファイルの自動生成
Pythonでの開発を効率的に進めるためのツール設定
テストを書こう、Unity編
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
Behat Driven Development
書こう! 使おう! 単体テスト
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール

What's hot (20)

PDF
書こう! 使おう! 単体テスト
PDF
Pythonを取り巻く開発環境 #pyconjp
PDF
SPAJAMでやったこと
PDF
8時間耐久PHPUnitの教室
PDF
密着!わたしのコンソールアプリ開発環境
PDF
XML-RPC : Pythonが「電池付属」と呼ばれる理由
PDF
Unity testtool
KEY
Windowsにpythonをインストールしてみよう
PDF
PyQtではじめるGUIプログラミング
PPTX
QtでHello, World!!
ODP
PySide/QtWebkitで楽々 slideshare Hack
PDF
「Python言語」はじめの一歩 / First step of Python
KEY
Gws in fukuoka
PDF
Python3 プログラミング勉強会
PDF
パッケージングの今と未来
PPTX
開発環境構築からはじめるPython VisualStudio Codeとpipenvで始めるpython
PDF
Pythonでゲーム作る
PPTX
Pythonでpdfをいじってみる
PDF
Python パッケージの影響を歴史から理解してみよう!
PDF
PHPUnit でテスト駆動開発を始めよう
書こう! 使おう! 単体テスト
Pythonを取り巻く開発環境 #pyconjp
SPAJAMでやったこと
8時間耐久PHPUnitの教室
密着!わたしのコンソールアプリ開発環境
XML-RPC : Pythonが「電池付属」と呼ばれる理由
Unity testtool
Windowsにpythonをインストールしてみよう
PyQtではじめるGUIプログラミング
QtでHello, World!!
PySide/QtWebkitで楽々 slideshare Hack
「Python言語」はじめの一歩 / First step of Python
Gws in fukuoka
Python3 プログラミング勉強会
パッケージングの今と未来
開発環境構築からはじめるPython VisualStudio Codeとpipenvで始めるpython
Pythonでゲーム作る
Pythonでpdfをいじってみる
Python パッケージの影響を歴史から理解してみよう!
PHPUnit でテスト駆動開発を始めよう
Ad

Similar to Pythonでブラウザをいっぱい動かしたい (20)

PDF
Why python
PDF
Why python
PDF
実務でGo使い始めました
PDF
Python & PyConJP 2014 Report
PDF
10分でわかるPythonの開発環境
PPTX
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
PPTX
PDF
PredictionIOのPython対応計画
PDF
S03 t1 python_learningdiary#3
PDF
PHPとJavaScriptの噺
PDF
S06 t1 python学習奮闘記#4
PDF
久しぶりのPythonでgoogleのアレを制御してみた
PPTX
俺 と ご褒美 Bot
PDF
はじめてのWord pressプラグイン勉強会
PPTX
211120 他人の書いたPythonスクリプトをステップ実行で理解する
PDF
S16 t1 python学習奮闘記#6
PPTX
Ipythonを使ってみよう
PDF
次世代言語 Python による PyPy を使った次世代の処理系開発
PDF
【A-5】(招待LT)灘校パソコン研究部とは
PDF
プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022
Why python
Why python
実務でGo使い始めました
Python & PyConJP 2014 Report
10分でわかるPythonの開発環境
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
PredictionIOのPython対応計画
S03 t1 python_learningdiary#3
PHPとJavaScriptの噺
S06 t1 python学習奮闘記#4
久しぶりのPythonでgoogleのアレを制御してみた
俺 と ご褒美 Bot
はじめてのWord pressプラグイン勉強会
211120 他人の書いたPythonスクリプトをステップ実行で理解する
S16 t1 python学習奮闘記#6
Ipythonを使ってみよう
次世代言語 Python による PyPy を使った次世代の処理系開発
【A-5】(招待LT)灘校パソコン研究部とは
プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022
Ad

More from Kameko Ohmura (9)

PDF
BPLL #43 老後の資産を作ろう
PPTX
Windowsマシンを使いだしたときの失敗談
PPTX
PyLadies Tokyo 5周年パーティー
PDF
BPLL説明
PDF
Bp study #122 PyQの学習者サポートから学んだpython初学者への解説ノウハウ
PDF
オンライン 英会話の すすめ
PDF
ラーニングランチとは
PPTX
What do I want to do?
PPTX
Aws上のWin鯖にRDC
BPLL #43 老後の資産を作ろう
Windowsマシンを使いだしたときの失敗談
PyLadies Tokyo 5周年パーティー
BPLL説明
Bp study #122 PyQの学習者サポートから学んだpython初学者への解説ノウハウ
オンライン 英会話の すすめ
ラーニングランチとは
What do I want to do?
Aws上のWin鯖にRDC

Pythonでブラウザをいっぱい動かしたい