python concurrentfuturesThreadPoolExecutor 设置并发超过2次控制台就不打印结果1次才会打印出来
这可能是因为你的线程池中的线程数太少,无法处理所有的任务。
concurrent.futures.ThreadPoolExecutor默认情况下会创建与CPU核心数相同的线程数。如果你的任务数量超过了线程池中的线程数,线程池可能无法及时处理所有的任务,导致结果无法打印出来。
你可以尝试增加线程池中的线程数,以提高并发处理能力。可以通过max_workers参数来设置线程池的最大线程数。
下面是一个示例代码:
from concurrent.futures import ThreadPoolExecutor
import time
def task(i):
print(f'Started task {i}')
time.sleep(1)
print(f'Finished task {i}')
return i
def main():
with ThreadPoolExecutor(max_workers=10) as executor:
futures = [executor.submit(task, i) for i in range(5)]
for future in futures:
result = future.result()
print(f'Result: {result}')
if __name__ == '__main__':
main()
在上面的代码中,我们将线程池的最大线程数设置为10,任务数量为5。即使任务数量超过了线程池的线程数,所有的结果都能够被正确打印出来。
如果你的任务数量非常大,超过了你的机器处理能力的限制,你可能需要考虑使用其他的并发处理方式,如多进程或异步编程
原文地址: https://www.cveoy.top/t/topic/iSTj 著作权归作者所有。请勿转载和采集!