重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要讲解了“Python多任务是怎么发生的”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python多任务是怎么发生的”吧!
在郸城等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计制作、成都网站设计 网站设计制作定制网站,公司网站建设,企业网站建设,成都品牌网站建设,全网整合营销推广,成都外贸网站制作,郸城网站建设费用合理。
准备工作
增加程序执行过程中细节的输出。
单任务时执行结果
WT:<<<
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:<<<
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:<<<
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多任务是怎么发生的这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!