並列処理,並行処理
よくどっちがどっちかわからなくなるのでまとめました.
非同期処理 | 並行処理 | いくつかのCPUで処理する 本当に同時に処理をしている |
・ pythonのmultiprocessing |
並列処理 | 待ち時間に他の処理をする CPUは一つのみ |
・ javascript ・ pythonのthreading |
|
同期処理 | 上から一つづつ処理する | C, Python, Ruby..(javasqript以外ほぼ全部) |
並列処理と並行処理,どちらもいくつかの処理を同時に行うものです.
この二つの違いは簡単にいうと本当に同時に処理しているか.
「並行処理」は実際に複数のCPUを使って同時にプログラムを処理します.一方で「並列処理」は,処理が順不同になるだけで,実際には同時に処理を行なっていません. この場合同期処理でいい気がしてしまいますが一つのプログラムが待ち状態の時に他の処理を行なっているので, 無駄な時間を減らせるメリットがあります.
例としてよくあげられるのは,のライブラリにあるthreading
とmultiprocessing
ですね.
doc↓
threading
https://docs.python.org/3/library/threading.html#module-threading
multiprocessing
https://docs.python.org/3/library/multiprocessing.html
javascriptは非同期処理と言われますが,実際に同時に処理をしているわけではなく並列処理です.front側の言語では,全て読み込みが終わるまで画面に何も表示されなかったりするのは見る側からするとストレスになるので同期処理ではなく非同期処理が使えるという理解です...
他にも一部だけ見た目を変えたりアニメーションをつけたりするときに毎回処理をしなおさなくてもいいようなプログラムがかけます.