遇到的問(wèn)題,python程序運(yùn)行中被killed。
代碼
def func1(k):
time.sleep(1)
print(k)
# return 'aaa'
from concurrent.futures import ThreadPoolExecutor, wait, ALL_COMPLETED
if __name__ == '__main__':
i = [1, 2, 3, 4, 5]
while 1:
executor = ThreadPoolExecutor(5) # 創(chuàng)建一個(gè)最大容量為16的線程池
rrr = executor.map(func1, i) # 通過(guò)線程池的map方法,將任務(wù)提交給線程池, map返回的是線程執(zhí)行的結(jié)果的生成器對(duì)象
print('0000000000')
結(jié)果
0000000000
1
5
3
4
2
0000000000
3
1
4
5
2
原因 開了多線程 和while 循環(huán) 沒(méi)有等結(jié)束就開下一輪 導(dǎo)致內(nèi)存泄漏
解決
def func1(k):
time.sleep(1)
print(k)
# return 'aaa'
from concurrent.futures import ThreadPoolExecutor, wait, ALL_COMPLETED
if __name__ == '__main__':
i = [1, 2, 3, 4, 5]
while 1:
executor = ThreadPoolExecutor(5) # 創(chuàng)建一個(gè)最大容量為16的線程池
# rrr = executor.map(func1, i) # 通過(guò)線程池的map方法,將任務(wù)提交給線程池, map返回的是線程執(zhí)行的結(jié)果的生成器對(duì)象
[j for j in executor.map(func1,i )]
print('0000000000')
time.sleep(6)