python課本第二版答案,重要更新|《Python程序設計開發寶典》例12-7代碼有bug

 2023-10-04 阅读 31 评论 0

摘要:下圖是《Python程序設計開發寶典》第330頁例12-7的代碼,本意是使用多線程技術進行文件復制,重點演示嵌套函數定義、多線程編程技術以及隊列在多線程同步時的用法。在代碼中,使用內嵌函數add()創建一個線程負責往隊列q中添加要復制的文件和文件夾名稱&#x

下圖是《Python程序設計開發寶典》第330頁例12-7的代碼,本意是使用多線程技術進行文件復制,重點演示嵌套函數定義、多線程編程技術以及隊列在多線程同步時的用法。

在代碼中,使用內嵌函數add()創建一個線程負責往隊列q中添加要復制的文件和文件夾名稱,使用內嵌函數copy()創建多個線程負責從隊列q中獲取這些名字并進行真正的復制或創建,使用隊列q實現這些線程之間的通信和同步。

在這個例子中,add()函數對應的一個線程相當于生產者,copy()對應的多個線程相當于消費者,隊列q相當于緩沖池用于平衡生產者和消費者之間的速度。

在add()函數中,原意是遞歸把指定路徑src及其所有子文件夾中的文件名和子文件夾名都依次放入隊列q,最后再往隊列q中寫入num(copy線程的數量)個空值None,這些空值的唯一作用是用于copy線程識別并結束工作狀態。

在上面的代碼中,add()函數在往q中逐個追加要復制的文件名和文件夾名時使用了遞歸,這本身并沒有什么問題,問題在于最后往q中寫入空值None的代碼也在add()函數之內。由于add函數是遞歸調用的,導致這段寫入None的代碼被執行多次,而隊列q的大小有限,隊列滿了之后導致了線程阻塞。執行該程序時,如果參數src中沒有子文件夾則運行正常,如果參數src中有子文件夾則程序無法正常結束。

解決這個問題的方法有多種,這里給出比較簡單的一種。在《Python程序設計開發寶典》283頁“第10章?文件與文件夾操作”講解遍歷目錄樹時,給出了按深度優先遍歷和按廣度優先遍歷兩種方法。參考按廣度優先遍歷目錄樹的思路,把例330頁12-7代碼中add()函數改寫為下面的樣子,就可以解決這個bug了。

《Python程序設計開發寶典》詳情鏈接(京東自營):

溫馨提示

python課本第二版答案、關注本公眾號“Python小屋”,通過菜單“最新資源”==>“歷史文章”可以快速查看分專題的800篇技術文章列表(可根據關鍵字在頁面上搜索感興趣的文章),通過“最新資源”==>“微課專區”可以免費觀看300節Python微課,通過“最新資源”==>“培訓動態”可以查看近期Python培訓安排,通過“最新資源”==>“教學資源”可以查看Python教學資源。

--------董付國老師Python系列圖書--------

1)《Python程序設計(第2版)》清華大學出版社

2)《Python可以這樣學》清華大學出版社

3)《Python程序設計基礎(第2版)》清華大學出版社

python代碼生成器,4)《中學生可以這樣學Python》清華大學出版社,配套微課:《中學生可以這樣學Python》84節微課免費觀看地址

5)《Python程序設計開發寶典》清華大學出版社

6)《玩轉Python輕松過二級》清華大學出版社

7)《Python程序設計基礎與應用》機械工業出版社

8)《Python程序設計實驗指導書》清華大學出版社

python程序設計答案?9)《Python編程基礎與案例集錦(中學版)》電子工業出版社

《中學生可以這樣學Python》84節微課免費觀看地址

非計算機專業《Python程序設計基礎》教學參考大綱

計算機相關專業“Python程序設計”教學大綱(參考)

《Python程序設計》實驗指導書(30個實驗)

c語言第一個程序helloworld?《Python程序設計基礎與應用》課后習題答案

Python課程期末考試編程題自動批卷原理與實現模板

“Python小屋”免費資源匯總(截至2018年11月28日)

Python課堂上我與學生斗智斗勇已8個學期

系列教學PPT:

python解題軟件、1900頁Python系列PPT分享一:基礎知識(106頁)

1900頁Python系列PPT分享二:Python序列(列表、元組、字典、集合)(154頁)

1900頁Python系列PPT分享三:選擇與循環結構語法及案例(96頁)

1900頁Python系列PPT分享四:字符串與正則表達式(109頁)

1900頁Python系列PPT分享五:函數設計與應用(134頁)

python手機版,1900頁Python系列PPT分享六:面向對象程序設計(86頁)

1900頁Python系列PPT分享七:文件操作(132頁)

1900頁Python系列PPT分享八:異常處理結構與程序調試、測試(70頁)

報告PPT(163頁):基于Python語言的課程群建設探討與實踐

報告PPT(123頁):Python編程基礎精要

面向對象編程的三個特征、2000頁Python系列PPT分享九:(GUI編程)(122頁)

Python實驗項目1例:使用進程池統計指定范圍內素數的個數

(PPT)Python程序設計課程教學內容組織與教學方法實踐

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/112379.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息