为什么python使用线程池会丢失部分数据?
如题,使用线程池会使结果行数减少,这是为什么?应该怎么修改?
改动后还是会出现问题
回答
import osfrom concurrent.futures import ThreadPoolExecutor
from time import perf_counter
import time
import threading as th
lock=th.Lock()
def write(text,path='re.txt'):
lock.acquire()
with open(path,'a') as fp:
fp.write(text)
lock.release()
def make_test_txt(path='test_txt.txt'):
with open(path,'w') as fp:
for i in range(100):
fp.write(str(i)+'\n')
#os.remove('re.txt')
make_test_txt()
with open('test_txt.txt') as fp:
texts=fp.readlines()
print(len(texts))
t=perf_counter()
pool=ThreadPoolExecutor(max_workers=2)
pool.map(write,texts)
pool.shutdown(wait=True)
time.sleep(1)
with open('re.txt') as fp:
texts2=fp.readlines()
print(len(texts2))
以上是 为什么python使用线程池会丢失部分数据? 的全部内容, 来源链接: utcz.com/a/38017.html