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.4k
Other Decks in Programming
See All in Programming
Performance Engineering for Everyone
elenatanasoiu
0
270
これからAgentCoreを触る方へトレンドはGatewayです
har1101
6
490
SREの積み重ねがAI駆動開発のガードレールになった ― 7つの実践/SRE Guardrails The 7
tomoyakitaura
8
4k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
110
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
460
OSINT for SRE: 学術論文とポストモーテムから探る システム障害の共通パターン / SRE NEXT 2026
tomoyk
1
3.5k
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
3.3k
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
3
4.3k
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.4k
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
250
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
110
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
200
Featured
See All Featured
Paper Plane
katiecoart
PRO
2
52k
Producing Creativity
orderedlist
PRO
348
40k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Are puppies a ranking factor?
jonoalderson
1
3.7k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
610
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.4k
First, design no harm
axbom
PRO
2
1.2k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
260
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Speed Design
sergeychernyshev
33
1.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εΫϦϓτͰฒྻॲཧΛ 😉