在项目中用到多线程,今天测试方法发现程序没有报错正常退出,可是循环却没有执行,于是开始了漫长的bug寻找过程,最终确认了错误点,写出来给大家提醒下。
代码如下:
import pandas as pdfrom concurrent.futures import ThreadPoolExecutorexecutor = ThreadPoolExecutor(8)def start(): print("start!!!!") executor.submit(test_t) print("end------------!!!!")def test_t(): print("测试开始!!!!") count = 0 stock_data = pd.read_csv("D:/work/data/sz_a/sz000001.csv", sep=",", encoding="UTF-8", header=0) print(" ---+++++++++++++++++++++++++++++++++++++++++++++++++++++++++------3333333-------- 1111") for stock in stock_data.itertuples(): count = count + 1 print("stock122222") print(count + " ----------------- 1111") if count > 5: break print("循环结束") print("测试结束")start()
当运行 start() 的时候,完全不会报错,结果如图:
当运行 test_t() 的时候就会报错了,结果如图:
所以新手在研究Python的时候要注意啊。害我白白浪费了好多时间 。。。 。。。
还有一个Python的程序方法执行顺序的问题,还在研究中。
#Python #线程