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
Parallel::Pipesの紹介
Search
Shoichi Kaji
May 31, 2025
Programming
1.1k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Parallel::Pipesの紹介
2025/05/31 Houtou.pm #1
Shoichi Kaji
May 31, 2025
More Decks by Shoichi Kaji
See All by Shoichi Kaji
go-exhaustruct linterのすすめ
skaji
0
130
宿泊予約サイトにおける検索と料金計算の両立
skaji
2
4.2k
昔のGo, 今のGo ~比較, ソート編~
skaji
0
310
Perl Quiz
skaji
0
180
cpm at PerlCon 2019
skaji
0
150
Perl5 Package Manager
skaji
0
800
Internal of cpm
skaji
0
660
How to execute external programs in Perl
skaji
3
740
Writing Perl with w0rp/ale
skaji
0
2.5k
Other Decks in Programming
See All in Programming
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
210
源内ハンズオン概要編
hideg
0
170
Foundation Models frameworkで画像分析
ryodeveloper
1
610
AI Readyの正体はデータマネジメントだ メダリオン2.0の最前線
freee
PRO
0
230
170k Jobs a Day on GKE: Scaling Mercari's CI Platform - and What's Next for AI-Native Development
junyaokabe
0
110
Cloudflare is Agents
chimame
0
160
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
500
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.8k
今さら聞けない .NET CLI
htkym
0
190
Lean は証明の正しさを確認するためだけのツールって思ってませんか?
inoueasei
1
160
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
3
780
FDEが実現するAI駆動経営の現在地
gonta
2
280
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Typedesign – Prime Four
hannesfritz
42
3.1k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Building Adaptive Systems
keathley
44
3.2k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
700
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
220
For a Future-Friendly Web
brad_frost
183
10k
Rails Girls Zürich Keynote
gr2m
96
14k
The Limits of Empathy - UXLibs8
cassininazir
1
600
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
390
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Transcript
Parallel::Pipesͷհ Shoichi Kaji
࣍ • Perlͷฒྻ/ฒߦॲཧ • PerlͷforkϞδϡʔϧ • Parallel::ForkManager • Parallel::Prefork •
ฒྻCPANΫϥΠΞϯτΛ࡞Γ͍ͨʂ • Parallel::PipesΛ࡞ͬͨ • ʑͷPerlεΫϦϓτʹฒྻॲཧΛ
Perlͷฒྻ/ฒߦॲཧ • PerlʹҰԠthread͕͋Δ͕ɺ5.20ΑΓެࣜʹ discouragedͱͳ͍ͬͯΔ • Πϕϯτۦಈʹؔͯ͠ɺPerlຊମʹͦͷαϙʔτ ͳ͍͕ɺ͍͔ͭ͘ͷ࣭ͷߴ͍Ϟδϡʔϧ͕ͦͷػೳΛ ఏڙ͍ͯ͠Δ: AnyEvent, Mojo,
IO::Async, etc • forkͯ͠ෳϓϩηε্ཱͪ͛ɺͦΕͰฒྻॲཧΛ͢ ΔબࢶͪΖΜ͋Δɻࠓ͜͜Λѻ͍͍ͨ
PerlͷforkϞδϡʔϧ • forkͯ͠ෳͷchildϓϩηεΛىಈ͠ɺchildϓϩηεͷཧɺ σʔλͷड͚͠Λखॿ͚ͯ͘͠ΕΔϞδϡʔϧͱͯ͠༗໊ͳͷ2બ • Parallel::ForkManager • Balazs Szabo͞Μ࡞ •
͔ͳΓੲ͔Β͋ΔϞδϡʔϧ • Parallel::Prefork • Oku Kazuho͞Μ࡞ • HTTP server StartletͰΘΕ͍ͯΔ
Parallel::ForkManager • preforkͰͳ͘ॲཧͷͨͼʹ ຖճforkΛݺͿελΠϧ • ൺֱతCLIͳͲͰΘΕΔ Πϝʔδ • fi leܦ༝Ͱchildϓϩηεͷ
݁ՌΛड͚औΕΔ
Parallel::ForkManager ॲཧ։࢝ ॲཧऴྃ parent child child child child parent childʹೖྗσʔλΛ͢
child͔Β݁ՌσʔλΛड͚औΔ
Parallel::Prefork • σʔϞϯϓϩηε༻ • childϓϩηεͷࢹ • γάφϧϋϯυϦϯά • childϓϩηεΛҰఆʹอͭ •
parent, childϓϩηεؒͰͷ σʔλͷड͚͠ػೳ༗͍ͯ͠ͳ͍
Parallel::Prefork ॲཧ։࢝ ॲཧऴྃ parent child child child child childΛࢹ͢Δ child
ฒྻCPANΫϥΠΞϯτΛ࡞Γ͍ͨ! • CPANϞδϡʔϧΛฒྻʹΠϯετʔϧͰ͖ΔCPAN client cpmΛ࡞ͬͨ • "CPANϞδϡʔϧΠϯετʔϧ"ΛɺͦΕࣗಠཱ࣮ͯ͠ߦͰ͖Δࡉ͔͍λεΫʹΘ͚ɺͦΕ Λฒྻʹॲཧ͍ͯ͘͠ઓུΛͨͯͨɻͱͳΔͱࡉ͔͍λεΫΛͲΜͲΜchildϓϩηεʹ͛ Δɺॲཧ͕ऴΘͬͨΒଈ࠲ʹ݁ՌΛಘΔɺͱ͍͏Έ͕ཉ͍͠ •
Parallel::ForkManager ? • childϓϩηεىಈ࣌ʹλεΫΛ1ͭͤΔͷΈͰԿͤͳ͍ • ݁Ռͷड͚औΓ͕ fi leϕʔεͩͱɺ݁Ռ͕ग़͍ͯΔ͜ͱʹଈ࠲ʹؾ͚ͳ͍ • Parallel::Prefork ? • childϓϩηεͱͷσʔλͷΓͱΓͷػߏ༻ҙ͞Ε͍ͯͳ͍ • childϓϩηεΛࢹͯ͠΄͍͠Θ͚Ͱͳ͍
ฒྻCPANΫϥΠΞϯτΛ࡞Γ͍ͨ! ॲཧ։࢝ ॲཧऴྃ parent child child child child childͱํʹσʔλΛΓͱΓ͍ͨ͠ childͷॲཧ͕ऴΘͬͨ͜ͱΛଈ࠲ʹݕ͍ͨ͠
-> pipeͱselectͰ࣮ݱͰ͖ͦ͏ʂ child
Parallel::Pipes • Parallel::PipesΛ࡞ͬͨ • preforkͨ͠childϓϩηεͱ pipeͰํʹଓ͠ taskɺ݁Ռͷड͚͠Λߦ͏ɻ pipeΛselect͠ɺॲཧऴྃΛ ଈ࠲ʹݕ͢Δ •
Parallel::PipescpmͷதͰΘΕ cpmͷͦ͞ͷͷͱͳ͍ͬͯΔ
Parallel::Pipes • cpmͰͷParallel::Pipesͷ͍ํ ͋Δtaskͷ͕ྃผͷtaskΛੜΉ ্ؔɺٕతͰ͋Δ • ҰํͰParallel::Pipes::App->map ୯ʹΈࠐΈؔmapͷฒྻ൛ ͱࢥͬͯ͏͜ͱͰ͖Δ •
ʑͷPerlεΫϦϓτʹ ฒྻॲཧΛ • Perlbetter shellͱݴΘΕΔ • Έͳ͞Μʑͷࡉʑͨ͠λεΫΛPerlεΫϦϓτΛॻ͘͜ͱͰ͜ͳ͍ͯ͠Δͱࢥ͏ • ͦ͏ͨ͠εΫϦϓτͰฒྻॲཧΛॻ͘ͷɺͳ͔ͳ͔ͳ͍Α͏ʹࢥ͏ •
ҰํͰ Parallel::Pipes::App->mapΛ͔ͳΓͷέʔεͰɺ ΈࠐΈؔmapͷdrop in replacement ͱͯ͑͠Δ • ͪΐͬͱͨ͠ͷͰฒྻԽ͘͠ͳΔͱɺલఏ͕มΘΔ 😉 • ʑͷPerlεΫϦϓτʹฒྻॲཧΛೖΕͯΈΔͷͲ͏ ? • ྫ: https://github.com/skaji/binary-install/blob/main/src/lib/App.pm#L500 https://github.com/skaji/build.pl/blob/main/src/lib/App.pm#L242
·ͱΊ • PerlͷฒྻॲཧϞδϡʔϧParallel::PipesΛհ ͨ͠ • cpm෦ͰΈʹΘΕ͍ͯΔ • ҰํɺͦΕΈࠐΈؔmapͷ͓खܰฒྻ൛ͱ ͯ͠͏͜ͱͰ͖Δ •
ʑͷPerlεΫϦϓτͰฒྻॲཧΛ 😉