我不熟悉python中的多线程,当我尝试通过手头的任务来学习它时,遇到了以下特殊代码无法正常工作的特殊情况(如文档中所述)。 / p>
def workerThread()
data= xyz
partData.append(data)
return(partData)
with ThreadPoolExecutor(max_workers=2) as executor:
results= { executor.submit(workerThread,driver,l): l for l in links_by_letters}
for future in as_completed(results):
print(future.result())
根据文档,future.result()
应该在工作的每个线程可用的时候,一一给我partData
。我正在使用两个线程,如现在进行测试的代码所示。运行此程序时,我观察到的行为是第一个线程生成的partData
被第二个线程覆盖。我的意思是,我从两个线程中得到两个future.results()
,并且这些结果都具有相同的数据(被覆盖)。
仅供参考:当我运行测试程序以了解流程时,我发现它正在按照文档进行工作。
def workerThread(x):
print("doing job {}".format(x))
time.sleep(5)
JobListList=(21,22,23)
return x
def trigger():
print("starting job 1")
with ThreadPoolExecutor(max_workers=2) as executor:
JobList=(1,2,3,4,5)
results= { executor.submit(workerThread,job): job for job in JobList}
for future in as_completed(results):
print(future.result())
我第一次提到的代码片段在哪里出错?