2017-11-04 5 views
1
#Version1 
main_df = pd.read_csv('Million_rows.csv') 
def myfunction(args*,start,end): 
    for i in range(start,end): 
    if condition1: 
     for item in mainTreeSearch: 
      ... 
       lock.acquire() 
       ###write to main_df 
       lock.release() 
       noLuck = False 
       break 
     if noLuck and Acondition: 
      lock.acquire() 
      ###write to main_df 
      lock.release() 
    elif 
    ... various asymmetric decision trees... 

t1 = Thread(target=myfuct, args=(args*),0,250)) 
t2 = Thread(target=myfuct, args=(args*),250,500)) 
t3 = Thread(target=myfuct, args=(args*),500,750)) 
t4 = Thread(target=myfuct, args=(args*),750,1000)) 

私の問題は、スレッドの残りの行にどのようにフィードするのか分かりません。私はQueueを試してみましたが、失敗しました。 sleepなしのバージョン2でスレッド間で通信して次のブロックを要求する方法はありますか?

#Version2 
def myfuntion(args*,q) 
    while True: 
    q.get() 
    ....same search as above...without locking 
    q.task_done() 

q = Queue(maxsize=0) 
num_threads = 5 
threads =[] 
for i in range(num_threads): 
    worker = Thread(target=myfunction, args=(args*)) 
    worker.setDaemon(True) 
    threads.append(worker) 
    worker.start() 

for x in range(1000): 
    #time.sleep(.005) 
    q.put(x) 

q.join() 

いずれか1匹のスレッド豚すべてのデータまたはランダムクラッシュが起こります。

バージョン1では、threading.nodify()メカニズムを使用する必要がありますか?その場合、どのように実装されますか?

答えて

0

私はこれにそれを再フォーマットし、それをチェックアウト

from Queue import Queue 
import threading 

q = Queue() 


def myfuntion(q): 
    while True: 
     val = q.get() 
     print('\n' + str(threading.currentThread())) 
     print('\n' + str(val)) 
     q.task_done() 


num_threads = 5 
threads = [] 
for i in range(num_threads): 
    worker = threading.Thread(target=myfuntion, args=(q,)) 
    worker.setDaemon(True) 
    threads.append(worker) 
    worker.start() 

for x in range(1000): 
    q.put(x) 

q.join() 

を期待どおりに動作します。私はあなたがパラメータを渡す方法が間違っていると思います。

+0

ありがとうございました!しかし、私も上記のスケルトンから始めました。キューイングの仕組みは一貫して機能せず、遅れを追加するだけでやや安定しているようです。 (私の謝罪は明示的ではないが、パラメータはこのスニペットのプレースホルダであり、実際のフォーマットではありませんでした) – user8588756

+0

あなたの要件を少し細かく指定できますか? – csurfer

関連する問題