Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Pythonで学ぶUnixプロセスの基礎
Search
tsurubee
December 20, 2017
Technology
6.9k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Pythonで学ぶUnixプロセスの基礎
「なるほどUnixプロセス」をPythonで学ぶ
tsurubee
December 20, 2017
More Decks by tsurubee
See All by tsurubee
大規模言語モデルにおけるData-Centric AIと合成データの活用 / Data-Centric AI and Synthetic Data in Large Language Models
tsurubee
1
570
言語モデルによるAI創薬の進展 / Advancements in AI-Driven Drug Discovery Using Language Models
tsurubee
2
610
AIトップカンファレンスからみるData-Centric AIの研究動向 / Research Trends in Data-Centric AI: Insights from Top AI Conferences
tsurubee
3
3.3k
DeepCrysTet: A Deep Learning Approach Using Tetrahedral Mesh for Predicting Properties of Crystalline Materials
tsurubee
0
1.3k
3次元メッシュで表現した結晶構造を用いた材料物性の予測に向けた深層学習モデルの設計 / Design of Deep Learning Model for Predicting Material Properties Using Crystal Structure Represented by Three-Dimensional Mesh
tsurubee
1
2.5k
分散システムの性能異常に対する機械学習の解釈性に基づく原因診断手法 / A Method for Diagnosing the Causes of Performance Issues in Distributed Systems Based on the Interpretability of Machine Learning
tsurubee
0
1.7k
機械学習の解釈性に関する研究動向とシステム運用への応用 / A Survey on Interpretable Machine Learning and Its Application for System Operation
tsurubee
0
390
機械学習モデルの局所的な解釈に着目したシステムにおける異常の原因診断手法の構想
tsurubee
0
8.1k
アニーリングマシンを活用したエッジAIにおける 生成モデルの学習効率化のためのアーキテクチャ
tsurubee
0
1.7k
Other Decks in Technology
See All in Technology
NAB Show 2026 動画技術関連レポート / NAB Show 2026 Report
cyberagentdevelopers
PRO
0
170
2026.06.13_AI時代に事業会社が「SIer出身エンジニア」を求める理由 / Why Businesses Seek Engineers with a System Integrator Background in the AI Era
jumtech
0
1.1k
LLMと共に進化するプロセスを目指して
ymatsuwitter
13
4k
AIソロプレナー時代に2ヶ月で20人増員した事業創造会社の開発組織の話
miyatakoji
0
600
Socrates × Looker 〜セマンティックレイヤーで進化するデータ分析エージェント〜
hanon52_
3
2.1k
なぜ Platform Engineering の土台に Kubernetes を選ぶのか
r4ynode
2
590
[モダンアプリ勉強会]今更聞けないGit/GitHub入門
tsukuboshi
0
370
非定型業務をAI slackbotで自動化する ~ 社内要望を自動壁打ちするbotを作った ~/automating-ad-hoc-work-with-ai-slackbot
shibayu36
0
610
小さくはじめるSLI/SLO ~育てながら組織に定着させる実践知~ / Starting Small with SLI/SLOs: Building Adoption Through Continuous Growth
nari_ex
6
1.8k
2026TECHFRESH畢業分享會 - 原生還是跨平台? App 開發踩坑實錄
line_developers_tw
PRO
0
840
Claude Code×Terraform IaC テンプレート駆動開発
itouhi
1
490
ポケモンの型をTypeScriptの型システムで表現してみた
subroh0508
0
370
Featured
See All Featured
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
160
We Have a Design System, Now What?
morganepeng
55
8.2k
So, you think you're a good person
axbom
PRO
2
2.1k
Between Models and Reality
mayunak
4
330
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
940
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
730
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Deep Space Network (abreviated)
tonyrice
0
170
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Transcript
1ZUIPOͰֶͿ 6OJYϓϩηεͷجૅ 1Z'VLVPLB
ࣗݾհ ͭΔͨ ʢ!UTVSVCFFʣ ΤϯδχΞྺɿ ͪΐ͍ େֶͷઐ߈Խֶ લ৬ফ࢜ झຯےτϨ ʢಛʹϕϯνϓϨεʣ
ࠓճͷత Θ͔ͬͨΑ͏ͰΘ͔Βͳ͍ʮϓϩηεʯʹ͍ͭͯ 1ZUIPOΛ༻͍ͯཧղΛਂΊΔ͜ͱɻ ͜ͷຊΛࢀߟʹ ͠·ͨ͠ɻ Φεεϝʂ ಈ࡞ڥɿ6CVOUV ʢ7JSUVBM#PY্ʹߏஙʣ ࢀߟจݙ
࣍ l ϓϩηεͱʁ l ϓϩηεͱʁ l ϓϩηεʹ*%͕͋Δ l ϓϩηεʹ͕͍Δ l
ϓϩηεͷϦιʔεΛݟͯΈΑ͏ʂ l ϓϩηεΛ࡞Δ l ϓϩηεࢠϓϩηεΛ࡞ΕΔ l GPSLͷڍಈΛͬͯΈΑ͏ʂ l ϓϩηεؒ௨৴ l ϓϩηεؒ௨৴ͱʁ l ύΠϓʹΑΔ௨৴ l ·ͱΊ
ϓϩηεͱʁ
ϓϩάϥϜͷ࣮ߦத ͷ࢟Ͱ͋Δɻ ϓϩηεͱʁ
ϓϩηεʹ*%͕͋Δ $ ps u USER PID %CPU %MEM VSZ RSS
TTY STAT START TIME COMMAND ubuntu 2005 0.0 0.5 21392 5392 pts/0 Ss+ 02:21 0:00 –bash ubuntu 2212 0.1 0.5 21388 5260 pts/1 Ss 06:18 0:00 –bash ubuntu 2228 0.0 0.3 36084 3348 pts/1 R+ 06:18 0:00 ps u 1ZUIPOͰɾɾ $ python >>> import os >>> os.getpid() 1229 QTίϚϯυ 04ͷػೳΛར༻͢ΔͨΊͷʮPTʯͱ͍͏ඪ४ϥΠϒϥϦ͕͋Δɻ 1*%୯ʹ࿈൪ʹͳ͍ͬͯΔͷϥϕϧͰ͋Δɻ
ϓϩηεʹ͕͍Δ QTUSFFίϚϯυ $ pstree systemd─┬─VBoxService─┬─{automount} │ ├─{control} │ ├─{cpuhotplug} │
├─{memballoon} │ ├─{timesync} │ ├─{vminfo} │ └─{vmstats} ├─polkitd─┬─{gdbus} │ └─{gmain} ├─snapd───6*[{snapd}] ├─sshd─┬─sshd───sshd───bash │ └─sshd───sshd───bash───pstree ├─systemd───(sd-pam) ├─systemd-journal ˞Ұ෦লུ ϓϩηεͷࢠؔΛπϦʔදࣔͰ͖Δɻ QTUSFFCBTIͷࢠ
ϓϩηεʹ͕͍Δ ϓϩηεͷ*%Λऔಘ͢Δ ͍͍ͨͯͷ߹ɺϓϩηεͦͷϓϩηεΛىಈͨ͠ ϓϩηεͱͳΔɻ $ python >>> import os >>>
os.getppid() 1165 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.9 0.5 37916 5976 ? Ss 06:43 0:08 /sbin/init ͯ͢ͷى1*%͕ͷJOJUϓϩηε ʢγεςϜىಈ࣌ʹ࠷ॳʹ্ཱ͕ͪΔϓϩηεʣ ΛͨͲ͍ͬͯ͘ͱɾɾ
ϓϩηεͷϦιʔεΛݟͯΈΑ͏ʂ l TUBUVT l DXE l FOWJSPO l FYF l
UBTL l NBQT ͳͲ QSPDϓϩηε*%
ϓϩηεΛ࡞Δ
ϓϩηεࢠϓϩηεΛ࡞ΕΔ l GPSL γεςϜίʔϧʹΑͬͯɺ࣮ߦதͷϓϩηε͔Β ৽͍͠ϓϩηεΛੜͰ͖Δɻ l GPSL ΛݺͿଆͷϓϩηεʮϓϩηεʯɺੜ͞Ε
ΔϓϩηεʮࢠϓϩηεʯͱͳΔɻ l ࢠϓϩηεɺϓϩηεͰΘΕ͍ͯΔͯ͢ͷϝϞ Ϧͷίϐʔͱɺϓϩηε͕։͍͍ͯΔϑΝΠϧσΟε ΫϦϓλΛҾ͖ܧ͙ɻ
GPSLͷڍಈΛͬͯΈΑ͏ import os if os.fork(): print("Here in the if block.")
else: print("Here in the else block.") $ python fork.py Here in the if block. Here in the else block. ࣮ߦ JG۟FMTF࣮۟ߦ͞Ε͍ͯΔɻͳʹ͕ى͖ͯΔʁ GPSL͢ΔͱԿ͕ى͖Δͷ͔ʁ fork.py
GPSLͷڍಈΛͬͯΈΑ͏ import os print("---- before fork ----") print("pid: {0}".format(os.getpid())) if
os.fork(): print("----- if block ------") print("pid: {0}".format(os.getpid())) else: print("---- else block -----") print("pid: {0}".format(os.getpid())) $ python fork.py ---- before fork ---- pid: 1547 ----- if block ------ pid: 1547 ---- else block ----- pid: 1548 ࣮ߦ JG͕۟ϓϩηεɺ FMTF͕۟ࢠϓϩηε ʹΑ࣮ͬͯߦ͞Ε͍ͯΔɻ ϓϩηε*%͕Ͳ͏ͳ͍ͬͯΔ͔ௐΔ fork.py
GPSLͷڍಈΛͬͯΈΑ͏ import os ret = os.fork() if ret: print("----- if
block ------") print("return value: {0}".format(ret)) else: print("---- else block -----") print("return value: {0}".format(ret)) $ python fork.py ----- if block ------ return value: 1548 ---- else block ----- return value: 0 ࣮ߦ ϓϩηεଆʹʮੜͨ͠ࢠϓϩηεͷ1*%ʯΛฦ͠ɺ ࢠϓϩηεଆʹʮʯΛฦ͢ɻ GPSLͷฦΓ͕Ͳ͏ͳ͍ͬͯΔ͔ௐΔ fork.py
ϓϩηεؒ௨৴
ϓϩηεؒ௨৴ͱʁ ϓϩηεؒ௨৴ʢ*1$*OUFS1SPDFTT$PNNVOJDBUJPOʣͱɺ ෳͷϓϩηεؒͰσʔλΛΓͱΓ͢ΔͨΊͷΈͰ͋Δɻ *1$ͷख๏༷ʑ ɾڞ༗ϝϞϦ ɾγάφϧ ɾύΠϓ ɾιέοτ ɾηϚϑΥ ɾϝοηʔδύογϯά
ͳͲ
ϓϩηεؒ௨৴ͱʁ ϓϩηεؒ௨৴ʢ*1$*OUFS1SPDFTT$PNNVOJDBUJPOʣͱɺ ෳͷϓϩηεؒͰσʔλΛΓͱΓ͢ΔͨΊͷΈͰ͋Δɻ *1$ͷख๏༷ʑ ɾڞ༗ϝϞϦ ɾγάφϧ ɾύΠϓ ɾιέοτ ɾηϚϑΥ ɾϝοηʔδύογϯά
ͳͲ ࠓίϨʂ
ύΠϓʹΑΔ௨৴ ύΠϓࢠؔʹ͋Δϓϩηεؒͷ୯ํͷ௨৴ Ϣʔβۭؒ Χʔωϧۭؒ ϑΝΠϧσΟεΫϦϓλ ϑΝΠϧσΟεΫϦϓλ
ϓϩηε ࢠϓϩηε σΟεϓϨΠ ΩʔϘʔυ ύΠϓ ࢀߟɿIUUQXXXDPJOTUTVLVCBBDKQdZBTDPJOTTZTQSP GPSL
ύΠϓʹΑΔ௨৴ import os reader, writer = os.pipe() if os.fork(): os.close(reader)
write_pipe = os.fdopen(writer, 'w') write_pipe.write('Hello child!') write_pipe.close() else: os.close(writer) read_pipe = os.fdopen(reader, 'r') message= read_pipe.readline() read_pipe.close() print(message) pipe.py $ python pipe.py Hello child! ࣮ߦ ϓϩηε ࢠϓϩηε
·ͱΊ ϓϩηεɺ*%͕͋ͬͯɺ͕͍ͯɺࢠΛ࡞Εͯɺ ௨৴͕Ͱ͖Δɻ ͦͯ͠ɺͦͷ༷ࢠΛ1ZUIPO͔Β֬ೝͰ͖Δɻ ࠓճͨ͜͠ͱҎ֎ʹ͍Ζ͍Ζಛ͕͋ΔͷͰɺ ͦΕ·ͨ࣍ճʂ ʻྫʼ ɾݽࣇϓϩηε ɾκϯϏϓϩηε ɾσʔϞϯϓϩηε
ɾιέοτ௨৴ ɾϚϧνϓϩηεॲཧ
͝ਗ਼ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠ʂ