今日は誰もが、pythonのマルチスレッドと共有変数を使用するための効率的な方法を共有する良い基準値を持つようにするための小さなは、我々は手助けをしたいです。小さな直列一緒に従うことを、是非、ご覧
タスクが同時に実行されているが、複数のタスクを実行するときに時々 、変数が表示されますすることができますPythonのマルチスレッド「偶然のを。」
import threading,time
n=0
start=time.time()
def b1(num):
global n
n=n+num
n=n-num
def b2(num):
for i in range(1000000):
b1(num)
t1=threading.Thread(target=b2,args=(5,))
t2=threading.Thread(target=b2,args=(8,))
t1.start()
t2.start()
t1.join()
t2.join()
end=time.time()
print(n)
print(end-start)
結果:
18
0.7520430088043213
可視変数N 0.75 Sを使用した場合、コンピュータシステムは、類似度を算出するので、18から0になり、N = N + NUMがメモリに二つの工程、第一のn + NUM計算値で算出し、算出されますnに割り当てられた値は、変数の出現につながった。このギャップである「事故。」
threading.Lockはスレッドまで使用される変数、およびリリースをロックするときに使用することができます!
import threading,time
n=0
lock=threading.Lock()
start=time.time()
def b1(num):
global n
n=n+num
n=n-num
def b2(num):
for i in range(1000000):
lock.acquire()#等待获取或获取修改变量的权限,并霸占它们
b1(num)
lock.release()#释放霸占的变量
t1=threading.Thread(target=b2,args=(5,))
t2=threading.Thread(target=b2,args=(8,))
t1.start()
t2.start()
t1.join()
t2.join()
end=time.time()
print(n)
print(end-start)
結果:
0
3.335190773010254
変数の値が正しいですが、たくさん遅く回は、効率が大幅に割り引かれているが、マルチスレッドの利点が際立っていませんでした。
だから、効率の問題を回避するために、スレッドのローカル変数の代わりに、グローバル変数を使用してみてください。
実際には、例えば、細かなプログラマを作る方法を、むしろ「巨根ワイヤー」よりだけでなく、それよりも技術的、技術的なものがあり、
プログラマー自身が高貴な存在である、ああ、それはないですか?
何よりも上のコンテンツは、最終的に良い評判をお勧めします
番号[プログラマ]公立大学、古いタイマーより、スキルを学習体験、インタビューのスキル、職場体験や他のシェアを学習がたくさんあります
我々は慎重にゼロベースの入門情報、実際のプロジェクトに関する情報を準備し、タイミングが毎日Pythonプログラマの技術を説明するために持っている、いくつかの学習を共有します
メソッドと細部への注意を払うに必要、あなたが参加することを歓迎している、将来は、コーディングを超えて、あなたは私が人ではないと関係が持っています
愚かな、たくさんのお金が、今長い幸せなプログラマを生きます!