2

正しい出力を取得するなど、サブプロセスの生成にいくつかの煩わしさがありました。ラッパーライブラリのenvoyは、ほとんどの問題を取り除く使いやすいインターフェイスで、私のすべての問題を解決しました。

スレッドを使用すると、終了しないプロセスのハングアップや、スレッド内で起動されて到達できなくなった外部プログラムなどに苦労することがあります。

「ダミーのためのスレッド」Pythonライブラリはありますか?ありがとう

4

2 に答える 2

8

「ダミーのためのスレッド化」Python ライブラリはありますか?

いいえ、ありません。threading単純なケースで使用するのは非常に簡単です。これを使用して、プログラムに並行性を導入したいと考えています。これは、2 つ以上のアクションを同時に、つまり同時に実行したい場合に使用することを意味します。

これは、ピーターに家を建てさせ、同時にイゴールにモスクワまで運転させる方法です。

from threading import Thread
import time

def drive_bus():
    time.sleep(1)
    print "Igor: I'm Igor and I'm driving to... Moskow!"
    time.sleep(9)
    print "Igor: Yei, Moskow!"

def build_house():
    print "Peter: Let's start building a large house..."
    time.sleep(10.1)
    print "Peter: Urks, we have no tools :-("

threads = [Thread(target=drive_bus), Thread(target=build_house)]

for t in threads:
    t.start()

for t in threads:
    t.join()

単純じゃないですか?関数を別のスレッドで実行するように定義します。threading.Threadとしてその機能を持つインスタンスを作成しますtarget。を呼び出すまで、これまでのところ何も起こりませんstartでした。スレッドを起動し、すぐに戻ります

メインスレッドを終了させる前に、生成したすべてのスレッドが終了するまで待つ必要があります。t.join()スレッドが終了するのをブロックして待機しますt。その時だけ、それは戻ってきます。

于 2012-09-25T16:39:42.830 に答える
3

実際のPythonライブラリについてもっと読むことをお勧めします-それは十分に単純です。スレッドのハングに関する問題は、アプリケーションが終了できない場合は、デーモンスレッドを使用することで解決できます。

どんな仕事をしようとしていますか?カスタムスレッドを実際に使用せずにタスクを並行して実行しようとしている場合は、パッケージのマルチプロセッシングが役立つ場合があります。さらに、Python wikiには、並列処理に関する興味深い情報があります。

タスクについてもう少し詳しく教えていただけますか?

于 2012-09-25T16:19:59.523 に答える