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()
メカニズムを使用する必要がありますか?その場合、どのように実装されますか?
ありがとうございました!しかし、私も上記のスケルトンから始めました。キューイングの仕組みは一貫して機能せず、遅れを追加するだけでやや安定しているようです。 (私の謝罪は明示的ではないが、パラメータはこのスニペットのプレースホルダであり、実際のフォーマットではありませんでした) – user8588756
あなたの要件を少し細かく指定できますか? – csurfer