1
我一直在並行調用myfunc
與threading.Thread代碼如下限制使用的資源:由於數據的重要量在多線程
def myfunc(elt,other):
subprocess.call("A matlab script that takes a while to execute")
allThreads = []
for elt in allElts:
allThreads.append(threading.Thread(target=myfunc,args=(elt,other)))
for t in allThreads:
t.start()
for t in allThreads:
t.join()
,我面臨的一個內存問題:我的一些subscribe.call的引發記憶問題,無法分配。爲了避免這個問題,我試圖線程的量同時執行至8我改變以上以下的代碼來限制:
someThreads = []
k = 0
for k in range(len(allElts)):
if k%8 == 1:
for t in someThreads:
t.start()
for t in someThreads:
t.join()
someThreads = []
someThreads.append(threading.Thread(target=myfunc,args=(allElts[k],other)))
else:
someThreads.append(threading.Thread(target=myfunc,args=(allElts[k],other)))
k += 1
這應該創建8個線程的最大和執行它們。 但是,這段代碼的結果與我之前得到的結果不同,顯然是錯誤的。它有什麼問題?