当前位置:   article > 正文

python如何下载指定版本TensorFlow_python下载tensorflow库

python下载tensorflow库

一、python安装与下载依赖
依赖版本

  1. TensorFlow>=2.3.0
  2. Keras >= 2.4.3
  3. Numpy < 1.19.0
  4. Pandas >= 1.1.0
  5. scikit-learn >= 0.23.2
  6. librosa >=0.8.0
  7. scipy==1.4.1

依赖下载

  1. TensorFlow>=2.3.0 pip3 install tensorflow-cpu==2.3.0 -i https://pypi.douban.com/simple/
  2. Keras >= 2.4.3 pip3 install Keras==2.4.3 -i https://pypi.douban.com/simple/
  3. Pandas >= 1.1.0 pip3 install Pandas==1.1.0 -i https://pypi.douban.com/simple/
  4. scikit-learn >= 0.23.2 pip3 install scikit-learn==0.23.2 -i https://pypi.douban.com/simple/
  5. librosa >=1.19.1 pip3 install librosa==0.8.0 -i https://pypi.douban.com/simple/
  6. scipy==1.4.1 pip3 install scipy==1.4.1 -i https://pypi.douban.com/simple/

安装python3

  1. yum -y install gcc
  2. yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
  3. wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
  4. tar -zxvf Python-3.7.3.tgz
  5. mkdir /usr/local/python3
  6. cd Python-3.7.3
  7. ./configure --prefix=/usr/local/python3
  8. make && make install
  9. ln -sf /usr/local/python3/bin/python3.7 /usr/bin/python3
  10. ln -sf /usr/local/python3/bin/pip3.7 /usr/bin/pip3

验证

pip3 list
pip3升级

pip3 --default-timeout=10000 install -U pip
pip3 卸载与安装

pip3 install 包名 例如:pip3 install Pandas
pip3 uninstall 包名 例如: pip3 uninstall Pandas

二、mybatis plus 乐观锁配置

  1. import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
  2. import org.springframework.context.annotation.Bean;
  3. import org.springframework.context.annotation.Configuration;
  4. import org.springframework.transaction.annotation.EnableTransactionManagement;
  5. /**
  6. * mybatis plus 乐观锁配置
  7. * @author nick
  8. */
  9. @EnableTransactionManagement
  10. @Configuration
  11. public class MybatisPlusConfig {
  12. /**
  13. * 乐观锁
  14. */
  15. @Bean
  16. public OptimisticLockerInterceptor optimisticLockerInterceptor() {
  17. return new OptimisticLockerInterceptor();
  18. }
  19. }

三、@Scheduled定时任务升级分布式定时任务

  1. /**
  2. * DisSchedule切面
  3. */
  4. @Order(100)
  5. @Aspect
  6. @Slf4j
  7. public class DisScheduleAspect {
  8. public static final String SERVER_NAME = "serverName";
  9. private final IDisScheduleService disScheduleService;
  10. private final String serverName;
  11. public DisScheduleAspect(
  12. IDisScheduleService disScheduleService,
  13. Environment environment) {
  14. Preconditions.checkNotNull(disScheduleService);
  15. this.disScheduleService = disScheduleService;
  16. Preconditions.checkNotNull(environment);
  17. String serverName = environment.getProperty(SERVER_NAME);
  18. Preconditions.checkArgument(!Strings.isNullOrEmpty(serverName));
  19. this.serverName = serverName;
  20. }
  21. /**
  22. * 方法上有注解SaveLog
  23. */
  24. @Pointcut(value = "@annotation(com.citydo.xclouddesk.interceptor.annotation.DisSchedule)")
  25. public void disScheduleAnnotation() {
  26. }
  27. @Around(value = "disScheduleAnnotation() && @annotation(disSchedule)")
  28. public Object disSchedule(ProceedingJoinPoint joinPoint, DisSchedule disSchedule) throws Throwable {
  29. Preconditions.checkNotNull(disSchedule);
  30. // 当前时间
  31. Date curDate = TimeUtil.getCurDate();
  32. // 获取name
  33. String name = disSchedule.name();
  34. if (Strings.isNullOrEmpty(name)) {
  35. // 方法名
  36. Signature signature = joinPoint.getSignature();
  37. name = signature.getName();
  38. }
  39. // 时间间隔
  40. int duration = disSchedule.duration();
  41. if (duration <= 0) {
  42. log.error(
  43. "disSchedule fail, duration {} is less or equal 0, name : {}",
  44. duration,
  45. name
  46. );
  47. return null;
  48. }
  49. // 时间间隔的单位
  50. TimeUnit unit = disSchedule.unit().getUnit();
  51. // 转化为毫秒
  52. long millis = unit.toMillis(duration);
  53. // 获取当前任务所属的开始时间
  54. Date taskDate = TimeUtil.getMillisDate(curDate, (int) millis);
  55. // 当前服务是否属于线上服务
  56. if (!disScheduleService.serverNameIsValid(serverName)) {
  57. log.info(
  58. "disSchedule fail, serverName is invalid, serverName : {} , name : {} , taskDate : {}",
  59. serverName,
  60. name,
  61. TimeUtil.specialFormatToDateStr(taskDate)
  62. );
  63. return null;
  64. }
  65. if (!disScheduleService.tryGetLock(name, taskDate, serverName)) {
  66. log.info(
  67. "Distributed lock not acquired, name : {} , taskDate : {}",
  68. name,
  69. TimeUtil.specialFormatToDateStr(taskDate)
  70. );
  71. return null;
  72. }
  73. // 执行正常的方法逻辑
  74. return joinPoint.proceed();
  75. }
  76. }
  1. /**
  2. * 在方法执行之前,决定当前是否需要执行定时调度任务
  3. * @author nick
  4. */
  5. @Target(ElementType.METHOD)
  6. @Retention(RetentionPolicy.RUNTIME)
  7. public @interface DisSchedule {
  8. /**
  9. * 定时调度任务的名称(默认是方法名)
  10. */
  11. String name() default "";
  12. /**
  13. * 任务的间隔时间
  14. */
  15. int duration();
  16. /**
  17. * duration的时间单位(默认:分钟)
  18. */
  19. DisScheduleUnit unit() default DisScheduleUnit.MINUTES;
  20. }
  1. /**
  2. * 分布式定时调度服务
  3. * @author nick
  4. */
  5. public interface IDisScheduleService {
  6. /**
  7. * 重新加载
  8. */
  9. void reload();
  10. /**
  11. * serverName是否有效
  12. */
  13. boolean serverNameIsValid(String serverName);
  14. /**
  15. * 尝试获取锁
  16. */
  17. boolean tryGetLock(String taskName, Date taskDate, String serverName);
  18. /**
  19. * 添加当前的serverName
  20. */
  21. void addServerName(String serverName);
  22. /**
  23. * 移除当前的serverName
  24. */
  25. void removeServerName(String serverName);
  26. }

``

  1. /**
  2. * redis实现
  3. */
  4. @Slf4j
  5. @Service
  6. public class DisScheduleRedisServiceImpl implements IDisScheduleService {
  7. public static final String DIS_SCHEDULE_SERVER_NAME = "disScheduleServerName";
  8. private final IRedisManager redisManager;
  9. public DisScheduleRedisServiceImpl(IRedisManager redisManager) {
  10. Preconditions.checkNotNull(redisManager);
  11. this.redisManager = redisManager;
  12. }
  13. @Override
  14. public void reload() {
  15. // do nothing
  16. }
  17. @Override
  18. public boolean serverNameIsValid(String serverName) {
  19. try {
  20. return redisManager.isMember(DIS_SCHEDULE_SERVER_NAME, serverName);
  21. } catch (Exception e) {
  22. log.error(
  23. "DisScheduleRedisServiceImpl-serverNameIsValid fail, serverName : {} , exception : {}",
  24. serverName,
  25. e
  26. );
  27. }
  28. return false;
  29. }
  30. @Override
  31. public boolean tryGetLock(String taskName, Date taskDate, String serverName) {
  32. try {
  33. return redisManager.setNx(
  34. taskName + "_" + TimeUtil.specialFormatToDateStr(taskDate),
  35. serverName
  36. );
  37. } catch (Exception e) {
  38. log.error(
  39. "DisScheduleRedisServiceImpl-tryGetLock fail, taskName : {} , taskDate : {} , serverName : {} , exception : {}",
  40. taskName,
  41. TimeUtil.specialFormatToDateStr(taskDate),
  42. serverName,
  43. e
  44. );
  45. }
  46. return false;
  47. }
  48. @Override
  49. public void addServerName(String serverName) {
  50. Preconditions.checkArgument(!Strings.isNullOrEmpty(serverName));
  51. redisManager.sAdd(DIS_SCHEDULE_SERVER_NAME, serverName);
  52. }
  53. @Override
  54. public void removeServerName(String serverName) {
  55. Preconditions.checkArgument(!Strings.isNullOrEmpty(serverName));
  56. redisManager.sRem(DIS_SCHEDULE_SERVER_NAME, serverName);
  57. }
  58. // @DisSchedule(name = "testSchedule", duration = 1, unit = DisScheduleUnit.MINUTES)
  59. // @Scheduled(cron = "0 0/1 * * * ?")
  60. // public void testSchedule() {
  61. // logger.info("输出");
  62. // }
  63. }
  1. public interface IRedisManager {
  2. /**
  3. * 向set中添加元素
  4. */
  5. boolean sAdd(String key, String value);
  6. /**
  7. * set中是否存在value
  8. */
  9. boolean isMember(String key, String value);
  10. /**
  11. * 移除set中的元素
  12. */
  13. void sRem(String key, String value);
  14. /**
  15. * 设置字符串的值(如果不存在的话)
  16. */
  17. boolean setNx(String key, String value);
  18. }
  19. 复制
  20. public interface IRedisManager {
  21. /**
  22. *set中添加元素
  23. */
  24. boolean sAdd(String key, String value);
  25. /**
  26. * set中是否存在value
  27. */
  28. boolean isMember(String key, String value);
  29. /**
  30. * 移除set中的元素
  31. */
  32. void sRem(String key, String value);
  33. /**
  34. * 设置字符串的值(如果不存在的话)
  35. */
  36. boolean setNx(String key, String value);
  37. }
  1. /**
  2. * 基于jedis实现的redisManager
  3. */
  4. @Service
  5. public class JedisManagerImpl implements IRedisManager {
  6. @Autowired
  7. private JedisPoolClient jedisPoolClient;
  8. /**
  9. * 返回1说明添加成功,返回0说明已经存在
  10. * @param key
  11. * @param value
  12. * @return
  13. */
  14. @Override
  15. public boolean sAdd(String key, String value) {
  16. Preconditions.checkArgument(!Strings.isNullOrEmpty(key));
  17. Preconditions.checkArgument(!Strings.isNullOrEmpty(value));
  18. return jedisPoolClient.sAdd(key, value) == 1L;
  19. }
  20. @Override
  21. public boolean isMember(String key, String value) {
  22. Preconditions.checkArgument(!Strings.isNullOrEmpty(key));
  23. Preconditions.checkArgument(!Strings.isNullOrEmpty(value));
  24. return jedisPoolClient.isMember(key, value);
  25. }
  26. @Override
  27. public void sRem(String key, String value) {
  28. Preconditions.checkArgument(!Strings.isNullOrEmpty(key));
  29. Preconditions.checkArgument(!Strings.isNullOrEmpty(value));
  30. jedisPoolClient.sRem(key, value);
  31. }
  32. @Override
  33. public boolean setNx(String key, String value) {
  34. Preconditions.checkArgument(!Strings.isNullOrEmpty(key));
  35. Preconditions.checkArgument(!Strings.isNullOrEmpty(value));
  36. return jedisPoolClient.setNX(key, value);
  37. }
  38. }

参考:GitHub - death00/dis-schedule: simple distributed timing scheduling

四、Multiset与HashMap、Multimap关系

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持vb.net教程C#教程python教程SQL教程access 2010教程

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/1013468
推荐阅读
相关标签
  

闽ICP备14008679号