SlideShare a Scribd company logo
1 of 34
Download to read offline
Pythonによる 
非同期プログラミング入門 
関根裕紀
自己紹介 
• 関根裕紀(せきね ひろのり) 
• アライドアーキテクツ株式会社 
• ソフトウェア・エンジニア 
• Twitter(@checkpoint )
経歴 
• 前職まで 
• RSSリーダー、SNS、WebMail、写真共有サービスなど 
• 現在(アライドアーキテクツ) 
• Webアプリケーション開発全般を担当 
• http://showcase.cool/ 
• 発表 
• http://ll.jus.or.jp/2014/archives/slides
アジェンダ 
• 同期I/O、非同期I/O 
• Pythonの非同期フレームワーク 
• asyncio概要、サンプル
同期I/O 
コンピュータ内部のCPUと周辺装置のデータ入出力(I/O)において、データの 
送受信の完了を待ってから他の処理を開始する方式。 
! 
同期I/Oでは、I/O処理が始まると他の処理はいったん停止し、送受信が完了 
してから続きの処理を開始・継続する。これに対し、I/O処理と並列に、送受 
信が完了していなくても可能な処理を進める方式を非同期I/O(ノンブロッキ 
ングI/O)という 
! 
IT用語辞典 
( http://e-words.jp/w/E5908CE69C9FI2FO.html ) より
コーヒーショップ(同期版) 
• 注文する 
• 出来るのを待つ 
• 受け取る
非同期I/O 
コンピュータ内部のCPUと周辺装置のデータ入出力(I/O)において、データの 
送受信の完了を待たずに他の処理を開始する方式。並列処理の一種。 
! 
非同期I/Oでは、I/O処理と並列に、データの送受信が完了していなくても可 
能な処理を進め、送受信が済まないと進められない処理にたどりついた場合 
に、そこで送受信の完了を待つ。これに対し、正常に送受信が完了したかど 
うかの結果を待ち、送受信処理に完了してから残りの処理を行う方式を同期I/ 
O(ブロッキングI/O)という。 
IT用語辞典 
( http://e-words.jp/w/E5908CE69C9FI2FO.html ) より
コーヒーショップ(非同期版) 
• 注文する 
• 別の所で待つ 
• 準備が出来たら呼ばれて、受け取る
比較 
同期版 
非同期版高速化
どういう場合に使う? 
• IOの待ち時間が長い処理 
• コネクションの取得 
• 外部サービスの呼び出し 
• APIの呼び出し 
• 逆にCPUバウンドなプログラムには有効ではない
Pythonの非同期処理の選択肢 
• twisted 
• tornado 
• gevent 
• thread、multi process、and etc…
Twisted 
• イベント駆動型のネットワークプログラミングフ 
レームワーク 
• TCP、UDP、SSL/TSL、などのサポート 
• 多数のプロトコルに対応(HTTP、SSH、FTP) 
• Deferred(遅延評価オブジェクト) 
• 外部イベントループとの結合
Tornado 
• Facebook( FriendFeed )が開発 
• オープンソース 
• Webフレームワーク + 非同期通信ライブラリ 
• 非常に高速(先日のLTでも発表があり) 
• 現在でもよく使われている
選択肢が多い 
• 選択肢が多いのは素晴らしい 
• どれがスタンダードなのかわからない 
• APIのスタイルが違う 
• 結合しているイベントループの種類が違う
asyncio 
• PEP 3156 ( http://legacy.python.org/dev/peps/pep-3156/ ) 
• Python3.4から標準ライブラリ 
• 非同期i/oの共通のコンポーネントを提供 
• Windows, Linuxをサポート 
• 既存のフレームワークを置き換えるのではなく、 
補完する
アーキテクチャ 
• Event loop 
• Corutines 
• Future、Task
Event loop 
• プラットフォームに最適なIO処理を提供
イベントループの取得 
• asyncio.get_event_loop() 
• asyncio.set_event_loop(loop) 
• asyncio.new_event_loop()
イベントループの実行、停止 
• loop.run_forever() 
• loop.run_until_complete(future) 
• loop.is_running() 
• loop.stop() 
• loop.is_closed()
コールバック 
• loop.call_soon(callback,*args) 
• loop.call_later(delay, callback, *args) 
• loop.call_at(when, callback, *args) 
• loop.time()
ファイルディスクリプタ 
• loop.add_reader(fd, callback, *args) 
• loop.remove_reader(fd) 
• loop.add_writer(fd, callback, *args) 
• loop.remove_writer(fd)
UNIX シグナル 
• loop.add_signal_handler(signum, callback, *args) 
• loop.remove_signal_handler(sig)
他にもたくさん 
• http://docs.python.jp/3/library/asyncio.html
Hello World 
import asyncio 
! 
def print_and_repeat(loop): 
print('Hello World') 
loop.call_later(2, print_and_repeat, loop) 
! 
loop = asyncio.get_event_loop() 
loop.call_soon(print_and_repeat, loop) 
loop.run_forever() 
http://docs.python.jp/3/library/asyncio-eventloop.html#example-hello-world-callback
Signal Sample 
import asyncio 
import functools 
import os 
import signal 
! 
def ask_exit(signame): 
print("got signal %s: exit" % signame) 
loop.stop() 
! 
loop = asyncio.get_event_loop() 
for signame in ('SIGINT', 'SIGTERM'): 
loop.add_signal_handler(getattr(signal, signame), 
functools.partial(ask_exit, signame)) 
! 
print("Event loop running forever, press CTRL+c to interrupt.") 
print("pid %s: send SIGINT or SIGTERM to exit." % os.getpid()) 
loop.run_forever() 
http://docs.python.jp/3/library/asyncio-eventloop.html#example-set-signal-handlers-for-sigint-and-sigterm
Coroutines 
• generator 
• @asyncio.coroutine 
• 任意の箇所で一旦処理を中止し、処理を再開
Coroutine Sample 
import asyncio 
! 
@asyncio.coroutine 
def greet_every_two_seconds(): 
while True: 
print('Hello World') 
yield from asyncio.sleep(2) 
! 
loop = asyncio.get_event_loop() 
loop.run_until_complete(greet_every_two_seconds()) 
http://docs.python.jp/3/library/asyncio-task.html#example-hello-world-coroutine
Chain Coroutines 
import asyncio 
! 
@asyncio.coroutine 
def greet_every_two_seconds(): 
while True: 
print('Hello World') 
yield from asyncio.sleep(2) 
! 
loop = asyncio.get_event_loop() 
loop.run_until_complete(greet_every_two_seconds()) 
http://docs.python.jp/3/library/asyncio-task.html
Future 
• 呼び出し可能オブジェクトの非同期実行をカプ 
セル化 
• future.add_done_callback() => 登録 
• future.result() => 結果の取得
実際はどう使う? 
• aiohttp( https://github.com/KeepSafe/aiohttp )
aiohttp 
@asyncio.coroutine 
def request(method, url, *, 
params=None, 
data=None, 
headers=None, 
cookies=None, 
files=None, 
auth=None, 
allow_redirects=True, 
max_redirects=10, 
encoding='utf-8', 
version=aiohttp.HttpVersion11, 
compress=None, 
chunked=None, 
expect100=False, 
connector=None, 
loop=None, 
read_until_eof=True, 
request_class=None, 
response_class=None):
aiohttp 
response = yield from aiohttp.request('GET', 'http://python.org') 
body = yield from response.read() 
print(body)
まとめ 
• まずはEventloop、Coroutine、Futureを覚える 
• スレッドなどに比べて概念が難しい(個人的に) 
• 徐々にasyncioをベースにした実装が出てくるはず。
ご静聴ありがとうございました。

More Related Content

What's hot

社会心理学者のための時系列分析入門_小森
社会心理学者のための時系列分析入門_小森社会心理学者のための時系列分析入門_小森
社会心理学者のための時系列分析入門_小森Masashi Komori
 
セクシー女優で学ぶ画像分類入門
セクシー女優で学ぶ画像分類入門セクシー女優で学ぶ画像分類入門
セクシー女優で学ぶ画像分類入門Takami Sato
 
プロジェクトマネージャのための機械学習工学入門
プロジェクトマネージャのための機械学習工学入門プロジェクトマネージャのための機械学習工学入門
プロジェクトマネージャのための機械学習工学入門Nobukazu Yoshioka
 
ブートストラップ法とその周辺とR
ブートストラップ法とその周辺とRブートストラップ法とその周辺とR
ブートストラップ法とその周辺とRDaisuke Yoneoka
 
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜SSII
 
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説Shiga University, RIKEN
 
グラフ構造データに対する深層学習〜創薬・材料科学への応用とその問題点〜 (第26回ステアラボ人工知能セミナー)
グラフ構造データに対する深層学習〜創薬・材料科学への応用とその問題点〜 (第26回ステアラボ人工知能セミナー)グラフ構造データに対する深層学習〜創薬・材料科学への応用とその問題点〜 (第26回ステアラボ人工知能セミナー)
グラフ構造データに対する深層学習〜創薬・材料科学への応用とその問題点〜 (第26回ステアラボ人工知能セミナー)STAIR Lab, Chiba Institute of Technology
 
AHC-Lab M1勉強会 論文の読み方・書き方
AHC-Lab M1勉強会 論文の読み方・書き方AHC-Lab M1勉強会 論文の読み方・書き方
AHC-Lab M1勉強会 論文の読み方・書き方Shinagawa Seitaro
 
三次元点群を取り扱うニューラルネットワークのサーベイ
三次元点群を取り扱うニューラルネットワークのサーベイ三次元点群を取り扱うニューラルネットワークのサーベイ
三次元点群を取り扱うニューラルネットワークのサーベイNaoya Chiba
 
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)RyuichiKanoh
 
Domain Adaptation 発展と動向まとめ(サーベイ資料)
Domain Adaptation 発展と動向まとめ(サーベイ資料)Domain Adaptation 発展と動向まとめ(サーベイ資料)
Domain Adaptation 発展と動向まとめ(サーベイ資料)Yamato OKAMOTO
 
最適化超入門
最適化超入門最適化超入門
最適化超入門Takami Sato
 
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介T. Suwa
 
Optimizer入門&最新動向
Optimizer入門&最新動向Optimizer入門&最新動向
Optimizer入門&最新動向Motokawa Tetsuya
 
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会takehikoihayashi
 
深層学習の数理
深層学習の数理深層学習の数理
深層学習の数理Taiji Suzuki
 
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定Akira Masuda
 
基礎からのベイズ統計学第5章
基礎からのベイズ統計学第5章基礎からのベイズ統計学第5章
基礎からのベイズ統計学第5章hiro5585
 
XAI (説明可能なAI) の必要性
XAI (説明可能なAI) の必要性XAI (説明可能なAI) の必要性
XAI (説明可能なAI) の必要性西岡 賢一郎
 

What's hot (20)

社会心理学者のための時系列分析入門_小森
社会心理学者のための時系列分析入門_小森社会心理学者のための時系列分析入門_小森
社会心理学者のための時系列分析入門_小森
 
セクシー女優で学ぶ画像分類入門
セクシー女優で学ぶ画像分類入門セクシー女優で学ぶ画像分類入門
セクシー女優で学ぶ画像分類入門
 
プロジェクトマネージャのための機械学習工学入門
プロジェクトマネージャのための機械学習工学入門プロジェクトマネージャのための機械学習工学入門
プロジェクトマネージャのための機械学習工学入門
 
ブートストラップ法とその周辺とR
ブートストラップ法とその周辺とRブートストラップ法とその周辺とR
ブートストラップ法とその周辺とR
 
Stan超初心者入門
Stan超初心者入門Stan超初心者入門
Stan超初心者入門
 
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
 
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説
 
グラフ構造データに対する深層学習〜創薬・材料科学への応用とその問題点〜 (第26回ステアラボ人工知能セミナー)
グラフ構造データに対する深層学習〜創薬・材料科学への応用とその問題点〜 (第26回ステアラボ人工知能セミナー)グラフ構造データに対する深層学習〜創薬・材料科学への応用とその問題点〜 (第26回ステアラボ人工知能セミナー)
グラフ構造データに対する深層学習〜創薬・材料科学への応用とその問題点〜 (第26回ステアラボ人工知能セミナー)
 
AHC-Lab M1勉強会 論文の読み方・書き方
AHC-Lab M1勉強会 論文の読み方・書き方AHC-Lab M1勉強会 論文の読み方・書き方
AHC-Lab M1勉強会 論文の読み方・書き方
 
三次元点群を取り扱うニューラルネットワークのサーベイ
三次元点群を取り扱うニューラルネットワークのサーベイ三次元点群を取り扱うニューラルネットワークのサーベイ
三次元点群を取り扱うニューラルネットワークのサーベイ
 
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
 
Domain Adaptation 発展と動向まとめ(サーベイ資料)
Domain Adaptation 発展と動向まとめ(サーベイ資料)Domain Adaptation 発展と動向まとめ(サーベイ資料)
Domain Adaptation 発展と動向まとめ(サーベイ資料)
 
最適化超入門
最適化超入門最適化超入門
最適化超入門
 
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
 
Optimizer入門&最新動向
Optimizer入門&最新動向Optimizer入門&最新動向
Optimizer入門&最新動向
 
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会
 
深層学習の数理
深層学習の数理深層学習の数理
深層学習の数理
 
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定
 
基礎からのベイズ統計学第5章
基礎からのベイズ統計学第5章基礎からのベイズ統計学第5章
基礎からのベイズ統計学第5章
 
XAI (説明可能なAI) の必要性
XAI (説明可能なAI) の必要性XAI (説明可能なAI) の必要性
XAI (説明可能なAI) の必要性
 

Similar to Pythonによる非同期プログラミング入門

ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会Takayuki Shimizukawa
 
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?Masamitsu Maehara
 
APIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjpAPIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjpTakeshi Komiya
 
Programming camp Codereading
Programming camp CodereadingProgramming camp Codereading
Programming camp CodereadingHiro Yoshioka
 
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~Hideki Takase
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力ThinReports
 
Pyconjp2014_implementations
Pyconjp2014_implementationsPyconjp2014_implementations
Pyconjp2014_implementationsmasahitojp
 
第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料Naoki Shibata
 
StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件yaegashi
 
あなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CIあなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CIWataru MIYAGUNI
 
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作ったPHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作ったHironobu Saitoh
 
Pyconjp2016 pyftplib
Pyconjp2016 pyftplibPyconjp2016 pyftplib
Pyconjp2016 pyftplibShinya Okano
 
hbstudy#6LTyuzorock
hbstudy#6LTyuzorockhbstudy#6LTyuzorock
hbstudy#6LTyuzorockyuzorock
 
Cent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみようCent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみよう2bo 2bo
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化Gosuke Miyashita
 
勉強会 Cvml python基礎
勉強会 Cvml python基礎勉強会 Cvml python基礎
勉強会 Cvml python基礎真哉 杉野
 
コピー自動生成プロダクトでDataflowを導入した話
コピー自動生成プロダクトでDataflowを導入した話コピー自動生成プロダクトでDataflowを導入した話
コピー自動生成プロダクトでDataflowを導入した話ShunyoKawamoto
 
インフラ自動化とHashicorp tools
インフラ自動化とHashicorp toolsインフラ自動化とHashicorp tools
インフラ自動化とHashicorp toolsUchio Kondo
 
OSSはどこまで産業用機器に使えるか_20230520.pdf
OSSはどこまで産業用機器に使えるか_20230520.pdfOSSはどこまで産業用機器に使えるか_20230520.pdf
OSSはどこまで産業用機器に使えるか_20230520.pdfKioto Hirahara
 
Ansible quickstart
Ansible quickstartAnsible quickstart
Ansible quickstartHideki Saito
 

Similar to Pythonによる非同期プログラミング入門 (20)

ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
 
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
 
APIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjpAPIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjp
 
Programming camp Codereading
Programming camp CodereadingProgramming camp Codereading
Programming camp Codereading
 
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
Pyconjp2014_implementations
Pyconjp2014_implementationsPyconjp2014_implementations
Pyconjp2014_implementations
 
第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料
 
StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件
 
あなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CIあなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CI
 
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作ったPHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作った
 
Pyconjp2016 pyftplib
Pyconjp2016 pyftplibPyconjp2016 pyftplib
Pyconjp2016 pyftplib
 
hbstudy#6LTyuzorock
hbstudy#6LTyuzorockhbstudy#6LTyuzorock
hbstudy#6LTyuzorock
 
Cent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみようCent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみよう
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
 
勉強会 Cvml python基礎
勉強会 Cvml python基礎勉強会 Cvml python基礎
勉強会 Cvml python基礎
 
コピー自動生成プロダクトでDataflowを導入した話
コピー自動生成プロダクトでDataflowを導入した話コピー自動生成プロダクトでDataflowを導入した話
コピー自動生成プロダクトでDataflowを導入した話
 
インフラ自動化とHashicorp tools
インフラ自動化とHashicorp toolsインフラ自動化とHashicorp tools
インフラ自動化とHashicorp tools
 
OSSはどこまで産業用機器に使えるか_20230520.pdf
OSSはどこまで産業用機器に使えるか_20230520.pdfOSSはどこまで産業用機器に使えるか_20230520.pdf
OSSはどこまで産業用機器に使えるか_20230520.pdf
 
Ansible quickstart
Ansible quickstartAnsible quickstart
Ansible quickstart
 

Pythonによる非同期プログラミング入門