文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python多任务是怎么发生的

2023-06-19 11:00

关注

这篇文章主要讲解了“Python多任务是怎么发生的”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python多任务是怎么发生的”吧!

准备工作

增加程序执行过程中细节的输出。

Python多任务是怎么发生的


单任务时执行结果

WT:<<<<WriteData:4<<<<
WT:int DataArray::addData(0)
WT:{
WT:     if(m_dataSize < (ARRAY_SIZE - 1))
WT:     {
WT:             m_buffer[0] = 0;
WT:             m_dataSize++;
WT:     }
WT:}
WT:int DataArray::addData(1)
WT:{
WT:     if(m_dataSize < (ARRAY_SIZE - 1))
WT:     {
WT:             m_buffer[1] = 1;
WT:             m_dataSize++;
WT:     }
WT:}
WT:int DataArray::addData(2)
WT:{
WT:     if(m_dataSize < (ARRAY_SIZE - 1))
WT:     {
WT:             m_buffer[2] = 2;
WT:             m_dataSize++;
WT:     }
WT:}
WT:int DataArray::addData(3)
WT:{
WT:     if(m_dataSize < (ARRAY_SIZE - 1))
WT:     {
WT:             m_buffer[3] = 3;
WT:             m_dataSize++;
WT:     }
WT:}
WT:int DataArray::addData(4)
WT:{
WT:     if(m_dataSize < (ARRAY_SIZE - 1))
WT:     {
WT:             m_buffer[4] = 4;
WT:             m_dataSize++;
WT:     }
WT:}
RT:>>>>ReadData:4>>>>
RT:int DataArray::getDataSize()
RT:{
RT:     return 5;
RT:}
RT::----data_size=5
RT:int DataArray::getData(0)
RT:{
RT:     if(index >= 0 && index < m_dataSize)
RT:     {
RT:             return m_buffer[0];, value =0
RT:     }
RT:}
RT:int DataArray::getData(1)
RT:{
RT:     if(index >= 0 && index < m_dataSize)
RT:     {
RT:             return m_buffer[1];, value =1
RT:     }
RT:}
RT:int DataArray::getData(2)
RT:{
RT:     if(index >= 0 && index < m_dataSize)
RT:     {
RT:             return m_buffer[2];, value =2
RT:     }
RT:}
RT:int DataArray::getData(3)
RT:{
RT:     if(index >= 0 && index < m_dataSize)
RT:     {
RT:             return m_buffer[3];, value =3
RT:     }
RT:}
RT:int DataArray::getData(4)
RT:{
RT:     if(index >= 0 && index < m_dataSize)
RT:     {
RT:             return m_buffer[4];, value =4
RT:     }
RT:}
RT:----total=10

上面的输出只是写五个数,读五个数的部分,但是可以看出写数据处理(WT)

完全结束以后,读数据处理(RT)才开始执行。这是数据处理正确进行的必要条件,记住这一点。

多任务(线程)条件下的执行结果

RT:>>>>ReadData:WT:<<<<WriteData:0<<<<
WT:int DataArray::addData(0)
WT:{
WT:     if(m_dataSize < (ARRAY_SIZE - 1))
WT:     {
WT:             m_buffer[0] = 0;
WT:             m_dataSize++;
WT:     }
WT:}
WT:int DataArray::addData(1)
WT:{
WT:     if(m_dataSize < (ARRAY_SIZE - 1))
WT:     {
WT:             m_buffer[1] = 1;
WT:             m_dataSize++;
WT:     }
WT:}
WT:int DataArray::addData(2)
WT:{
WT:     if(m_dataSize < (ARRAY_SIZE - 1))
WT:     {
WT:             m_buffer[2] = 2;
WT:             m_dataSize++;
WT:     }
WT:}
WT:int DataArray::addData(3)
WT:{
WT:     if(m_dataSize < (ARRAY_SIZE - 1))
WT:     {
WT:             m_buffer[3] = 3;
WT:             m_dataSize++;
WT:     }
WT:}
WT:int DataArray::addData(4)
WT:{
WT:     if(m_dataSize < (ARRAY_SIZE - 1))
WT:     {
WT:             m_buffer[4] = 4;
WT:             m_dataSize++;
WT:     }
WT:}
WT:<<<<WriteData:1<<<<
WT:int DataArray::addData(0)
WT:{
WT:     if(m_dataSize < (ARRAY_SIZE - 1))
0>>>>
RT:int DataArray::getDataSize()
RT:{
RT:     return 5;
RT:}
RT::----data_size=5
RT:int DataArray::getData(0)
RT:{
RT:     if(index >= 0 && index < m_dataSize)
RT:     {
RT:             return m_buffer[0]RT:   }
RT:}
RT:int DataArray::getData(1)
RT:{
RT:     if(index >= 0 && index < m_dataSize)
RT:     {
RT:             return m_buffer[1]RT:   }
RT:}
RT:int DataArray::getData(2)
RT:{
RT:     if(index >= 0 && index < m_dataSize)
RT: {
RT:             return m_buffer[2]RT:   }
RT:}
RT:int DataArray::getData(3)
RT:{
RT:     if(index >= 0 && index < m_dataSize)
WT:     {
WT:             m_buffer[5] = 0;
WT:             m_dataSize++;
WT:     }
WT:}
WT:int DataArray::addData(1)
WT:{
WT:     if(m_dataSize < (ARRAY_SIZE - 1))
WT:     {
WT:             m_buffer[6] = 1;
WT:             m_dataSize++;
WT:     }
WT:}

如果程序可以看出写数据处理和读数据处理随机交替进行,执行结果会怎么样没有人能说清楚。另外虽然本例中没有涉及,如果内存关联处理,则经常会出现内存破坏而导致死机等各种问题。而且由于任务切换的随机性,问题的发生也是随机的,这可能是多任务变成最大的难点。

感谢各位的阅读,以上就是“Python多任务是怎么发生的”的内容了,经过本文的学习后,相信大家对Python多任务是怎么发生的这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯