Pythonのスレッディングを使用して、同時に入力と出力を行う方法について説明します。この記事では、スレッドからの戻り値の取得方法と、異なるスレッドでの入力と出力の同時実行について説明します。

スレッドからの戻り値の取得

Pythonのスレッドから戻り値を取得する一つの方法は、スレッドのコンストラクタに可変オブジェクト(リストや辞書など)を渡し、スレッドがそのオブジェクトの専用スロットに結果を格納するようにすることです。

def foo(bar, result, index):
    print('hello {0}'.format(bar))
    result[index] = "foo"

from threading import Thread

threads = [None] * 10
results = [None] * 10

for i in range(len(threads)):
    threads[i] = Thread(target=foo, args=('world!', results, i))
    threads[i].start()

for i in range(len(threads)):
    threads[i].join()

print(" ".join(results))

このコードでは、各スレッドがresultsリストの専用スロットに"foo"を格納します。スレッドが終了した後、resultsリストには各スレッドの戻り値が格納されます。

異なるスレッドでの入力と出力の同時実行

Pythonでは、異なるスレッドで同時に入力と出力を行うことが可能です。以下にその例を示します。

import threading
import time

def run_thread():
    while True:
        print('thread running')
        time.sleep(2)
        global stop_threads
        if stop_threads:
            break

stop_threads = False
t1 = threading.Thread(target=run_thread)
t1.start()
time.sleep(0.5)

q = ''
while q != 'q':
    q = input()

stop_threads = True
t1.join()
print('finish')

このコードでは、run_thread関数が別のスレッドで実行され、ユーザーが'q'を入力するまで'thread running'を出力し続けます。同時に、メインスレッドではユーザーからの入力を待ち続けます。

以上がPythonのスレッディングを使用した入出力の基本的な方法です。これらのテクニックを使用することで、Pythonプログラムの並行処理を効果的に行うことができます。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です