0
私はarrayの要素を合計し、マルチスレッドを使って出力するコードを書いています。しかし、グローバルな値を使う代わりに、ローカルの値を使用してそれを返すことができます。しかし、私は戻り値を使用するスレッドdie.Anyアイデアを行う方法については?Pythonでスレッドから値を返す方法は?
import threading
import time
total = 0
class myThread(threading.Thread):
def __init__(self,threadId,name,starts,ends):
threading.Thread.__init__(self)
self.threadId = threadId
self.name = name
self.starts = starts
self.ends = ends
def run(self):
print "strating " + self.name
threadLock.acquire()
calc_sum(self.starts,self.ends)
threadLock.release()
def calc_sum(start,end):
global total
for i in xrange(start,end):
total += arr[i]
threadLock = threading.Lock()
threads = []
arr = [1,2,3,4,5,6,7,8,9,10]
thread1 = myThread(1,'t1',0,5)
thread2 = myThread(2,'t2',5,10)
thread1.start()
thread2.start()
threads.append(thread1)
threads.append(thread2)
for t in threads:
t.join()
print total
どのようにしてt.totalとしてスレッドにアクセスできますか?あなたは私をもっとはっきりと説明できますか? –
スレッドはリストであり、 を 'スレッド中にする ' あなたはスレッドを1つ取ります。次に、あなたの帰属合計を呼び出します。実際には、合計をグローバルに保存する代わりに、self.totalに保存します。 – fjcf1