Python 標準の通信ライブラリである socket を活用して、簡易チャットソフトを開発してみます。 チャットソフトを実際に開発していく中で、非同期処理や例外処理、TCP 通信するプログラムを段階的に解説していきます。 Python の公式ドキュメントだけだと通信の流れがつかみにくいという人には、とても刺さる内容になっていると思います。 はじめに Pythonのセットアップ Python でソケット通信をする場合、特別な準備が必要ないので導入がめっちゃ楽です。 https://www.python.org/downloads/ 上記の公式サイトから Python をインストールしたら準備 ok です。標準機能でソケット通信のライブラリが組み込まれている上、もちろんマルチプラットフォームで動作します。 ※本記事は Python 3.9.7 で確認しています。 サーバーのおさらい サーバー
Pythonで同時に2つ以上の処理をする方法を紹介します スレッド スレッドプール プロセスプール イベントループ(コルーチン) スレッド (threading) スレッドを使えば、複数の関数を同時に動かすことができます。 threading.Thread クラスに target として関数を渡し、start() で開始すると動きます。 import time import threading def func1(): while True: print("func1") time.sleep(1) def func2(): while True: print("func2") time.sleep(1) if __name__ == "__main__": thread_1 = threading.Thread(target=func1) thread_2 = threading.Thr
1.概要PythonのThreadingモジュールは、複数のスレッドを使用してPythonプログラムを並列実行するためのツールです。Threadingモジュールを使用すると、複数のタスクを同時に実行したり、長時間実行されるタスクをバックグラウンドで実行したりできます。PythonのGIL(Global Interpreter Lock)により、スレッドはCPU時間を共有することができるため、Pythonのマルチスレッドプログラミングはマルチプロセスプログラミングよりも簡単で効率的です。 2.基本的な使い方まず、threadingモジュールをインポートします。 import threading 次に、スレッドで実行する関数を定義します。 def print_numbers(): for i in range(10): print(i) def print_letters(): for let
シングルスレッドやマルチプロセスなどの並行処理の話について、 すぐに忘れてしまいます。 どうしたらもっと知識が定着すると思いますか? 色んなライブラリーでAPIサーバーを立ててパフォーマンスの差などを見てみたりするのですが、結局よくわかりませんでした。 フレームワークに頼って実装していると、そのフレームワークが内部でどの様な仕組みで並列または並行処理しているのかが理解できず、ただ使っているだけの状態になり得ます。 フレームワークの設計者からすると、プログラマがそれらを気にしなくても利用できるというのがプロジェクトのゴールでもあるので、それはそれで正しいのですが「並列処理」や「並行処理」を理解したいというモチベーションでは逆にそれが邪魔をしてしまうかもしれません。 並行処理や並列処理を学ぶのであれば、API サーバ等といった物ではなく、コード片で学び始めるのが良いと思います。 例えば Rub
はじめに 2023年5月10日に開催されたEnablement Workshop for Gophersで「並行処理の基礎を学ぼう」というタイトルで講義を行ないました。 Enablement Workshop for Gophersは、ナレッジワークが学生向けに提供する手を動かしながら基礎を学ぶ"Enablement"の機会です。 今回のテーマは2023年6月21日〜23日に行われるEnablement Internship for Gophersに合わせて『並行処理』です。 具体的には主に以下のような並行処理の基礎や最近または今後のアップデートについてお話しました。 ゴールーチンとチャネル syncパッケージ コンテキスト 講義の様子はYouTubeで公開されています。 ゴールーチンとチャネル Goの有名な特徴の1つとしてゴールーチンとチャネルを用いた並行処理があります。 講義では、ゴー
はじめに こんにちはnasaちゃんです。 goroutine何も分からん!async/await何も分からん!となったのでそれぞれを比較しつつ理解を深めてみよう。という考えのもとGo, Rustの並行プログラミングの解説記事を書いてみました。 ところどころふわっとしているため、補足や指摘を貰えると大変助かります。 今回話すこと goroutineとは結局何なの Goの並行処理の仕組み goroutine(Go)とasync/await(Rust)の比較 Goのランタイム、Rustのランタイムの話 話さないこと 構文の違いについては特に触れない どちらが優れているとい言う話はしない ベースになっている思想については特に触れない TL;DR Goには標準のランタイムがあるよ、Rustではランタイムライブラリを使う必要があるよ Goはランタイムが中断再開を管理するよ、Rustではプログラマーが管
まえがき オライリーから発売される「並行プログラミング入門」が若干早く入手できました。せっかくなので、紹介とか感想を書いてみようかと思います。結論だけ先に書いておくと、並行/並列プログラミングに興味があるなら買いましょう必ず役に立ちます。 どんな本? この本は、大学のOSの授業とかで習うような並行/並列プログラミングの基礎を網羅的に扱っている素晴らしい本です。それだけに留まらず近年利用されているような幅広い技術に関する発展的な内容まで広く扱っています。 どんな人におすすめ? 並行/並列プログラミングの基礎が学びたい人 ロックなどの基礎技術の実装例について学びたい人 Rustを使った並行/並列プログラミングについて学びたい人 並行/並列プログラミングの計算モデル(意味論など)について学びたい人 ロックフリー、STM、async/awaitといった最新の技術について学びたい人 書籍の紹介 この
TL;DR 並行処理を実装する人のこれからのスタンダードになる一冊。買い。 並行プログラミング入門 ―Rust、C、アセンブリによる実装からのアプローチ 作者:高野 祐輝 オライリージャパン Amazon 買ったら思いの外早く届いたのでパラパラと読み始めたら一気に読み終えてしまった。 総評 敢えて雑な喩え方をするなら The Art of Multiprocessor Programming (通称TAoMP本) の内容を薄めてRustやアセンブラや計算モデルを足したような本だった。 日本語の書籍としてはかなり珍しくWait-Free, Lock-Free, Obstruction-Freeの違いなどを適切に論じており、TTAS Lock, MCS Lock, TL2といった日本語では希少な情報が書かれているレアな本である。これらに付いて論じている日本語の本は知る限り (TAoMP本と昔僕
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く