当前位置: 首页 > news >正文

冀州网站建设价格百度百家号注册

冀州网站建设价格,百度百家号注册,网站开发小公司推荐,wordpress4.85版本线程的注意点学习目标能够说出线程的注意点1. 线程的注意点介绍线程之间执行是无序的主线程会等待所有的子线程执行结束再结束线程之间共享全局变量线程之间共享全局变量数据出现错误问题2. 线程之间执行是无序的import threading import timedeftask():time.sleep(1)print(当前线程:, threading.current_thread().name)if __name__ __main__:for _ in range(5):sub_thread threading.Thread(targettask)sub_thread.start()执行结果:当前线程: Thread-1 当前线程: Thread-2 当前线程: Thread-4 当前线程: Thread-5 当前线程: Thread-3说明:线程之间执行是无序的它是由cpu调度决定的 cpu调度哪个线程哪个线程就先执行没有调度的线程不能执行。进程之间执行也是无序的它是由操作系统调度决定的操作系统调度哪个进程哪个进程就先执行没有调度的进程不能执行。3. 主线程会等待所有的子线程执行结束再结束假如我们现在创建一个子线程这个子线程执行完大概需要2.5秒钟现在让主线程执行1秒钟就退出程序查看一下执行结果示例代码如下:import threading import time# 测试主线程是否会等待子线程执行完成以后程序再退出defshow_info():for i in range(5):print(test:, i)time.sleep(0.5)if __name__ __main__:sub_thread threading.Thread(targetshow_info)sub_thread.start()# 主线程延时1秒time.sleep(1)print(over)执行结果:test: 0 test: 1 over test: 2 test: 3 test: 4说明:通过上面代码的执行结果我们可以得知: 主线程会等待所有的子线程执行结束再结束假如我们就让主线程执行1秒钟子线程就销毁不再执行那怎么办呢?我们可以设置守护主线程守护主线程:守护主线程就是主线程退出子线程销毁不再执行设置守护主线程有两种方式threading.Thread(targetshow_info, daemonTrue)线程对象.setDaemon(True)设置守护主线程的示例代码:import threading import time# 测试主线程是否会等待子线程执行完成以后程序再退出defshow_info():for i in range(5):print(test:, i)time.sleep(0.5)if __name__ __main__:# 创建子线程守护主线程 # daemonTrue 守护主线程# 守护主线程方式1sub_thread threading.Thread(targetshow_info, daemonTrue)# 设置成为守护主线程主线程退出后子线程直接销毁不再执行子线程的代码# 守护主线程方式2# sub_thread.setDaemon(True)sub_thread.start()# 主线程延时1秒time.sleep(1)print(over)执行结果:test: 0 test: 1 over3. 线程之间共享全局变量需求:定义一个列表类型的全局变量创建两个子线程分别执行向全局变量添加数据的任务和向全局变量读取数据的任务查看线程之间是否共享全局变量数据import threading import time# 定义全局变量 my_list list()# 写入数据任务defwrite_data():for i in range(5):my_list.append(i)time.sleep(0.1)print(write_data:, my_list)# 读取数据任务defread_data():print(read_data:, my_list)if __name__ __main__:# 创建写入数据的线程write_thread threading.Thread(targetwrite_data)# 创建读取数据的线程read_thread threading.Thread(targetread_data)write_thread.start()# 延时# time.sleep(1)# 主线程等待写入线程执行完成以后代码在继续往下执行write_thread.join()print(开始读取数据啦)read_thread.start()执行结果:write_data: [0, 1, 2, 3, 4] 开始读取数据啦 read_data: [0, 1, 2, 3, 4]4. 线程之间共享全局变量数据出现错误问题需求:定义两个函数实现循环100万次每循环一次给全局变量加1创建两个子线程执行对应的两个函数查看计算后的结果import threading# 定义全局变量 g_num 0# 循环一次给全局变量加1defsum_num1():for i in range(1000000):global g_numg_num 1print(sum1:, g_num)# 循环一次给全局变量加1defsum_num2():for i in range(1000000):global g_numg_num 1print(sum2:, g_num)if __name__ __main__:# 创建两个线程first_thread threading.Thread(targetsum_num1)second_thread threading.Thread(targetsum_num2)# 启动线程first_thread.start()# 启动线程second_thread.start()执行结果:sum1: 1210949 sum2: 1496035注意点:多线程同时对全局变量操作数据发生了错误错误分析:两个线程first_thread和second_thread都要对全局变量g_num(默认是0)进行加1运算但是由于是多线程同时操作有可能出现下面情况在g_num0时first_thread取得g_num0。此时系统把first_thread调度为”sleeping”状态把second_thread转换为”running”状态t2也获得g_num0然后second_thread对得到的值进行加1并赋给g_num使得g_num1然后系统又把second_thread调度为”sleeping”把first_thread转为”running”。线程t1又把它之前得到的0加1后赋值给g_num。这样导致虽然first_thread和first_thread都对g_num加1但结果仍然是g_num1全局变量数据错误的解决办法:线程同步: 保证同一时刻只能有一个线程去操作全局变量 同步: 就是协同步调按预定的先后次序进行运行。如:你说完我再说, 好比现实生活中的对讲机线程同步的方式:线程等待(join)互斥锁线程等待的示例代码:import threading# 定义全局变量 g_num 0# 循环1000000次每次给全局变量加1defsum_num1():for i in range(1000000):global g_numg_num 1print(sum1:, g_num)# 循环1000000次每次给全局变量加1defsum_num2():for i in range(1000000):global g_numg_num 1print(sum2:, g_num)if __name__ __main__:# 创建两个线程first_thread threading.Thread(targetsum_num1)second_thread threading.Thread(targetsum_num2)# 启动线程first_thread.start()# 主线程等待第一个线程执行完成以后代码再继续执行让其执行第二个线程# 线程同步 一个任务执行完成以后另外一个任务才能执行同一个时刻只有一个任务在执行first_thread.join()# 启动线程second_thread.start()执行结果:sum1: 1000000 sum2: 20000005. 小结线程执行执行是无序的主线程默认会等待所有子线程执行结束再结束设置守护主线程的目的是主线程退出子线程销毁。线程之间共享全局变量好处是可以对全局变量的数据进行共享。线程之间共享全局变量可能会导致数据出现错误问题可以使用线程同步方式来解决这个问题。线程等待(join)
http://www.hkea.cn/news/14273066/

相关文章:

  • 做网站公司怎么样wordpress 相册浏览器
  • 企业网站flash网站建设运营工作业绩
  • 辽宁鞍山网站建设公司wordpress前端用户
  • 蓝彩网络科技_齐齐哈尔微信营销_齐齐哈尔网站建设网站建设需要自备什么
  • 网站备案对网站负责人的要求网站建设制
  • 国外的设计网站安装文件出现乱码
  • 网站建设 引导物流行业网站建设市场分析
  • 35互联做网站多少钱厦门购买域名以后搭建网站
  • 向自己做网站上海网页制作多少钱
  • 中国建设工程招标网站顺企网属于什么网站
  • 网站做游戏活动策划方案WordPress破解分享
  • 仿wordpress站免费门户网站搭建
  • 域名备案查询网站备案陕西建设网官方网站
  • 网站开发盈亏平衡分析表安徽股票配资网站建设
  • 做外贸网站基本流程网站建设的功能有哪些内容
  • 网站推广一般办法太原深圳建设工程信息网站
  • 手机百度网站证书过期浙江省建设教育考试中心网站
  • 网站建设合同需要缴纳印花税网站建设济南
  • 建立网站需要多少人网站春节放假
  • linux 网站开发wordpress汉化教程视频
  • 网站建设总体规划包括哪些黑色大气网站源码
  • 江西建设厅网站查询施工员九游手游平台app
  • 网站建设实验周志与总结制作网站单页
  • 百度数据网站电子商务网站建设策划书 服装 有详细数据库设计
  • 因脉网站建设公司怎么呀韩国萨wordpress
  • 国外做游戏的视频网站wordpress微信登录设置
  • 网站建设设计图图片seo网站关键字优化
  • 为什么有的网站点不开广西住房和城乡建设厅培训中心网站首页
  • 中国门户网站排行千海网站建设 小程序
  • 潍坊网站建设教程网页建站