时间线程:掌握系统时钟的多线程程序

版权申诉
0 下载量 42 浏览量 更新于2024-10-21 收藏 1KB RAR 举报
资源摘要信息: "shizhong.rar_时间线程" 在讨论标题和描述中提到的知识点之前,我们首先需要明确文件中涉及到的技术概念和实际应用。标题“shizhong.rar_时间线程”暗示了这个压缩文件包含了关于“时间线程”的内容,即在计算机程序中,利用线程(Thread)来获取系统当前时间的方法和原理。描述中的“用线程获取系统时间的时钟,这儿是我们的小作业”则进一步指明了这个任务的性质,它是一个教学或练习性质的小项目,目的是通过实践活动来理解线程如何工作以及如何实现定时或计时功能。 以下是根据文件内容提炼出的几个核心知识点: 1. 线程(Thread)的概念: 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。线程负责程序的执行流,负责程序执行中的一系列动作。在多线程环境中,可以有多个线程同时执行,每个线程执行不同的任务,这使得程序可以同时处理多个任务,提高了应用程序的效率和响应性。 2. 系统时间的获取: 在计算机中,获取系统时间通常需要调用操作系统提供的API函数。在不同的编程语言和平台中,这些API函数可能有所不同。例如,在Windows系统中,可以使用GetSystemTime函数来获取系统时间;在Unix/Linux系统中,可以通过time.h头文件中的函数如time()来获取当前时间。 3. 时间线程的应用场景: 时间线程在很多场景下都有应用,包括但不限于: - 定时任务(比如定时清理缓存、备份数据等) - 计时器(比如游戏中的倒计时、程序中的延时操作等) - 实时监控(比如监控文件系统变化、网络状态变化等) - 用户界面的响应(比如显示实时时间、倒计时等) 4. 多线程编程的挑战与注意事项: - 线程同步问题,即多个线程访问同一资源时如何保证数据的一致性和防止竞态条件(Race Condition)。 - 线程安全问题,需要确保线程操作的安全性,避免因为线程调度导致的数据错乱。 - 死锁(Deadlock)问题,即两个或多个线程因为互相等待对方释放资源而无限等待。 - 线程资源管理,包括线程的创建、销毁、优先级调整等。 5. 实现时间线程的编程语言和工具: - Java:通过实现Runnable接口或继承Thread类,使用start()方法启动线程,并在run()方法中实现具体逻辑。 - Python:利用threading模块中的Thread类创建和管理线程。 - C/C++:使用POSIX线程库(pthread.h)在UNIX系统上实现线程编程。 *** Framework:使用System.Threading命名空间下的类(如Thread类)。 6. 文件名称列表中的“时钟.txt”可能表明了这个小作业涉及到创建一个简单的时钟程序,它可能使用线程来定期更新显示的时间。 - “***.txt”则可能是与项目相关的一些说明性文字,或是项目开发过程中需要参考的资料链接。 在完成这个“小作业”时,学习者可能需要结合实际的编程语言和开发环境,通过实践来掌握如何创建线程,如何通过线程获取系统时间,并通过线程实现时间的定时更新等。这不仅锻炼了编程者的编程能力,也加深了对多线程编程机制和并发控制的理解。

import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from keras.models import Sequential from keras.layers import Dense from pyswarm import pso import matplotlib.pyplot as plt from sklearn.preprocessing import StandardScaler from sklearn.metrics import mean_absolute_error from sklearn.metrics import mean_squared_error from sklearn.metrics import r2_score file = "zhong.xlsx" data = pd.read_excel(file) #reading file X=np.array(data.loc[:,'种植密度':'有效积温']) y=np.array(data.loc[:,'产量']) y.shape=(185,1) # 将数据集分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X,y, test_size=0.25, random_state=10) SC=StandardScaler() X_train=SC.fit_transform(X_train) X_test=SC.fit_transform(X_test) y_train=SC.fit_transform(y_train) y_test=SC.fit_transform(y_test) print("X_train.shape:", X_train.shape) print("X_test.shape:", X_test.shape) print("y_train.shape:", y_train.shape) print("y_test.shape:", y_test.shape) # 定义BP神经网络模型 def nn_model(X): model = Sequential() model.add(Dense(8, input_dim=X_train.shape[1], activation='relu')) model.add(Dense(12, activation='relu')) model.add(Dense(1)) model.compile(loss='mean_squared_error', optimizer='adam') return model # 定义适应度函数 def fitness_func(X): model = nn_model(X) model.fit(X_train, y_train, epochs=60, verbose=2) score = model.evaluate(X_test, y_test, verbose=2) print(score) # 定义变量的下限和上限 lb = [5, 5] ub = [30, 30] # 利用PySwarm库实现改进的粒子群算法来优化BP神经网络预测模型 result = pso(fitness_func, lb, ub) # 输出最优解和函数值 print('最优解:', result[0]) print('最小函数值:', result[1]) mpl.rcParams["font.family"] = "SimHei" mpl.rcParams["axes.unicode_minus"] = False # 绘制预测值和真实值对比图 model = nn_model(X) model.fit(X_train, y_train, epochs=60, verbose=2) y_pred = model.predict(X_test) y_true = SC.inverse_transform(y_test) y_pred=SC.inverse_transform(y_pred) plt.figure() plt.plot(y_true,"bo-",label = '真实值') plt.plot(y_pred,"ro-", label = '预测值') plt.title('神经网络预测展示') plt.xlabel('序号') plt.ylabel('产量') plt.legend(loc='upper right') plt.show() print("R2 = ",r2_score(y_test, y_pred)) # R2 # 绘制损失函数曲线图 model = nn_model(X) history = model.fit(X_train, y_train, epochs=60, validation_data=(X_test, y_test), verbose=2) plt.plot(history.history['loss'], label='train') plt.plot(history.history['val_loss'], label='test') plt.legend() plt.show() mae = mean_absolute_error(y_test, y_pred) print('MAE: %.3f' % mae) mse = mean_squared_error(y_test, y_pred) print('mse: %.3f' % mse)

2023-06-10 上传