【发布时间】:2019-03-11 18:46:33
【问题描述】:
这可能已经在这里问过了,但我找不到合适的关键字来搜索。
我有一个数组,我想将它们分成块,然后将它们交给线程对每个切片做一些工作并转储结果。
但是,我需要按顺序重新组合每个线程的结果。
我尝试为每个线程传递锁以锁定并将结果转储到另一个数组中,但顺序不正确。我假设是因为每个线程在不同的时间完成。
在 Python 3 中最好的方法是什么?
import threading
import numpy as np
from queue import Queue
def add(lock, work):
value = 0
for v in work:
#Do some work!
lock.acquire()
result.append(value)
lock.release()
a = np. arange(0,100)
result = []
lock = threading.Lock()
q = Queue()
for i in range(0,a.shape[0],10):
work = a[i:i+10]
t = threading.Thread(target=add, args=(lock,work))
t.start()
q.put(t)
while q.empty() == False:
q.get().join()
value = 0
for v in result:
#Assemble
print(value)
【问题讨论】:
标签: python multithreading