マルチプロセス・シミュレーション・チケット〜
インポート時の インポートJSON からマルチプロセッシングインポートプロセス クラスショー(プロセス): #查 デフ実行(自己): (オープンと「チケット」Fなど): DIC = json.load(F) 印刷(" 余票:{} " .format(DIC [ ' チケット' ])) クラス Buy_ticket(プロセス): #买 デフ __init__ (自己、名): スーパー()。__init__ () self.name = 名前 defを実行します(自己): (オープンと「チケット」Fなど): DIC = json.load(F) time.sleep( 0.1) #シミュレーション待ち時間 IF DIC [ ' チケット' ]> 0: DIC [ ' チケット' ] - = 1枚の。 プリント(' {}チケット~~~買う' .format(self.name))を time.sleep( 0.1) #シミュレート潜伏 オープン(との' チケット'、' W ' )AS F: json.dump(DIC、F) 他: 印刷(' {}チケットを取得できませんでした!!! ' .format(self.name)) IF __name__ == ' __main__ ' : 用 I におけるレンジ(10 ): Q1 = ショー() q1.start() 用 I における範囲(10 ): I = STR(I) Q2 = Buy_ticket(I) q2.start()
JSONファイル:結果:2人のための1枚の以上のチケットがは〜のチケットを得ました。
ロックを追加した後
インポート時の インポートJSON からマルチプロセッシングインポートプロセス からマルチプロセッシングインポートロック クラスショー(プロセス): #查 デフ実行(自己): (オープンと「チケット」Fなど): DIC = json.load(F) 印刷(" 余票:{} " .format(DIC [ ' チケット' ])) クラス Buy_ticket(プロセス): #購入 DEFの __init__(セルフ、名前、ロック): #はロックオブジェクトの受信 スーパーを()。__init__ () self.name = 名前 self.lock = ロック デフ実行(自己): self.lock.acquire() #キードア オープン(との' チケット' )AS F: DIC = json.load(F) time.sleep( 0.1) #シミュレーション待ち時間 IF DIC [ ' チケット' ]> 0: DIC [ ' チケット' ] - = 1枚の。 プリント(' {}チケット~~~買う' .format(self.name))を time.sleep( 0.1) #シミュレート潜伏 オープン(との' チケット'、' W ' )AS F: json.dump(DIC、F) 他: 印刷(' {}チケットを取得できませんでした!!! ' .format(self.name)) self.lock.release() #还钥匙 場合 __name__ == ' __main__ ' : 用 I における範囲(10 ): Q1 = ショー() q1.start() ロック =ロック() #は、ロックオブジェクトを定義する ために、私に(10レンジ): I = STR(I) Q2 = Buy_ticket(I、ロック)#は、子プロセスに渡されたオブジェクトのロック )(q2.startを
JSONファイル:結果:3つだけの人が買って~~