1

2 つの無限並列ループを実行したい。1 つは、サーバーからデータを読み取り、数値でオブジェクトを更新することです。もう 1 つは、それを読み取る以外に何もせず、変更があった場合はそれを処理します。同期している必要はありません。だから私の質問は:

  • ある側から書き込み、別の側から読み取る場合、Python には問題がありますか?
  • 同期の問題が発生した場合、読み取り/書き込みプロセスをロックする必要がありますか? 私がそれを行うべき他の方法はありますか?
  • thread または threading のどちらを使用するのが最適ですか?
  • 次のステップとして、100 のサイトから読み取り、100 のオブジェクトを更新し、100 のループから変更を読み取ります。問題なくスケーリングできるように、最初からマルチプロセッシングを使用することをお勧めしますか? 読み取りと書き込みの問題で必要ですか?

どんな助けでも大歓迎です。

4

2 に答える 2

0

短い答えは、あなたが理解できると思うものは何でもです。つまり、コードは学習目的のために意味のあるものでなければなりません..

これは例です。軽くて使いやすいです。スレッドとの間で値を取得するのは簡単です..実際のマルチスレッドではありません(同じCPUコア)

from threading import *

class worker(Thread):
    def __init__(self, input=0):
        self.input = input
        Thread.__init__(self)
        self.start()

    def run(self):
        while 1:
            self.input += 1

x = worker(-100)
y = worker(x.input)

print y.input

Yこれは、スレッドが .. のデータにアクセスできることを示す単なる例xです。実際には、両方のスレッドが同じ変数を更新することを考えると、これは危険な場合があります :) (要するに: -100 はサイクルごとに 2 回計算され、-98 、-96、-94 など)

  • 複数の CPU にまたがらない
  • 使いやすい (スレッド間でデータにアクセスするのは簡単です)
  • キュー システムや分散システムに慣れていない場合は、論理コード
  • OS がそれ以上スレッドを作成できない場合 (「制限」)、エラーが発生します。
于 2013-04-22T16:45:38.070 に答える