SlideShare a Scribd company logo
1 of 11
Download to read offline
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

What's hot

書こう! 使おう! 単体テスト
書こう! 使おう! 単体テスト書こう! 使おう! 単体テスト
書こう! 使おう! 単体テストryohji ikebe
 
Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpPythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpYoshifumi Yamaguchi
 
SPAJAMでやったこと
SPAJAMでやったことSPAJAMでやったこと
SPAJAMでやったことHiroto Imoto
 
8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室Yusuke Ando
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境Fumihito Yokoyama
 
XML-RPC : Pythonが「電池付属」と呼ばれる理由
XML-RPC : Pythonが「電池付属」と呼ばれる理由XML-RPC : Pythonが「電池付属」と呼ばれる理由
XML-RPC : Pythonが「電池付属」と呼ばれる理由Ransui Iso
 
Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようKenji NAKAGAKI
 
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングPyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングRansui Iso
 
QtでHello, World!!
QtでHello, World!!QtでHello, World!!
QtでHello, World!!treby
 
PySide/QtWebkitで楽々 slideshare Hack
PySide/QtWebkitで楽々 slideshare HackPySide/QtWebkitで楽々 slideshare Hack
PySide/QtWebkitで楽々 slideshare HackKazushige TAKEUCHI
 
Pythonのシグナル処理
Pythonのシグナル処理Pythonのシグナル処理
Pythonのシグナル処理Atsuo Ishimoto
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of PythonTakanori Suzuki
 
Python3 プログラミング勉強会
Python3 プログラミング勉強会Python3 プログラミング勉強会
Python3 プログラミング勉強会Tetsuya Morimoto
 
パッケージングの今と未来
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来Atsushi Odagiri
 
開発環境構築からはじめるPython VisualStudio Codeとpipenvで始めるpython
開発環境構築からはじめるPython VisualStudio Codeとpipenvで始めるpython開発環境構築からはじめるPython VisualStudio Codeとpipenvで始めるpython
開発環境構築からはじめるPython VisualStudio Codeとpipenvで始めるpythontomitomi3 tomitomi3
 
Python パッケージの影響を歴史から理解してみよう!
Python パッケージの影響を歴史から理解してみよう!Python パッケージの影響を歴史から理解してみよう!
Python パッケージの影響を歴史から理解してみよう!Kir Chou
 

What's hot (20)

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

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

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

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

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

More from Kameko Ohmura

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

More from Kameko Ohmura (9)

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

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