首页 > 技术文章 > Python Semaphore控制多线程并发数

learning-logs 2020-06-13 13:25 原文

参考链接:https://blog.csdn.net/qq_39850969/article/details/86666620

 1 if __name__ == '__main__':
 2     # # 设置开始、结束日期,间隔天数
 3     start_date = '2019-07-16'
 4     end_date = '2020-07-30'
 5     date_list = pd.date_range(start_date, end_date, freq='D')
 6     leng = len(date_list)
 7     sema = threading.Semaphore(value=3)  #希望多进程最大的并发数
 8     for i in range(leng):
 9         date = date_list[i].strftime('%Y-%m-%d %H:%M:%S')[:10]
10         sema.acquire()
11         th = threading.Thread(target = fun_run,args = (date,sema,))
12         th.start()

但是并发数设置成5的时候,还是会出现fun_run接收不到给出的参数date,sema从而报错。但是重新运行的时候又没有问题了,设置成3的时候会好很多。原因不明。

推荐阅读