999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

“多線程”編程應用三例

2021-11-24 14:56:58牟曉東
電腦報 2021年44期
關鍵詞:程序設置

牟曉東

在計算機編程中,“線程”(thread)指的是一組可以在程序中獨立執行的指令集合,它是代碼執行的最小單位。如果程序在運行過程中只有一個線程的話,那么下一個任務必須要等到上一個任務結束后才能進行,這是一種低效的“串行”流程;引入“多線程”運行機制后,就可以在主線程執行任務的同時“并行”執行其他的任務,幾乎不需要等待時間,從而極大提高程序的運行效率。值得一提的是,“多線程”與程序調用函數并不相同,因為函數的調用是“阻塞”執行方式——必須等函數正常執行結束后才會繼續執行后面的程序代碼(否則會一直處于等待中)。在此分別以Python代碼編程和樹莓派、掌控板圖形化編程為例,演示“多線程”編程的應用。

一、Python:四支“畫筆”同時作畫

在Spyder編輯器中新建“Python多線程畫圖.py”文件,首先通過“import turtle”和“from threading import Thread”將海龜庫模塊和線程庫模塊導入;接著,設置好“畫布”的大小為800×600像素:“turtle.screensize(800,600)”,并且通過turtle模塊的Turtle()函數建立t1-t4四個Turtle對象;然后自定義四個畫圖函數,以my_draw1(a)為例:

傳入的參數a控制循環的次序:“for i in range(a):”,循環體只包括“t1.forward(2)”和“t1.left(1)”兩行代碼,作用是控制t1(Turtle對象)向前走兩個像素再向左轉1度。比如調用該函數時傳入的參數a值為180,則會畫一個180度的“半圓”(畫筆顏色默認為黑色)。其余的my_draw2(b)、my_draw3(c)和my_draw4(d)三個函數基本類似,只是多了一行“t2.pencolor(‘red)”設置畫筆顏色的代碼。

接下來,同時開啟四個線程,調用目標分別是四個Turtle對象的畫圖函數,傳入的參數均為360(畫360度的空心圓):“Thread(target=my_draw1,args=(360,)).start()”、“Thread(target=my_draw2,args=(360,)).start()”、“Thread(target=my_draw3,args=(360,)).start()”和“Thread(target=my_draw4,args=(360,)).start()”,特別要注意args后的參數必須是元組形式“(360,)”(逗號不能省略);最后,添加“turtle.mainloop()”無限循環方式處理事件語句。

程序代碼保存后運行測試,在彈出的“Python Turtle Graphics”窗口中出現了四個小箭頭,同時分別朝著設定的方向運動,最終畫出了四個顏色相異的“內切”和“外切”圓(如圖1)。

二、樹莓派:三色燈帶不同步閃爍

首先,將一條可編程ws281x燈帶通過古德微擴展板的18號引腳與樹莓派連接;接著,登錄古德微機器人網站進入“積木”編程區進行圖形化編程。

在主程序中對燈帶先進行初始化,然后順序添加三個子線程,名稱為“燈帶紅色”、“燈帶綠色”和“燈帶藍色”,分別對應三個同名的函數;每個函數均控制整條燈帶60個燈珠的三分之一部分,其中的“燈帶紅色”函數的功能是將1-20號燈珠先設置為發紅光,0.1秒鐘后再熄滅并持續0.1秒鐘;“燈帶綠色”函數的功能是將21-40號燈珠先設置為發綠光,0.2秒鐘后再熄滅并持續0.2秒鐘;而“燈帶藍色”函數的功能則是將剩下的41-60號燈珠先設置為發藍光,0.4秒鐘后再熄滅并持續0.4秒鐘(如圖2)。

如果主程序不是采用“多線程”而是函數的直接調用方式,其運行效果就會是在1-20號燈珠閃爍紅光的0.2秒鐘(兩個0.1秒鐘)周期內,其余的40個燈珠是全熄滅狀態;接下來,在21-40號燈珠閃爍綠光的0.4秒鐘周期內,前20個和后20個燈珠同樣是全熄滅狀態;最后,在41-60號燈珠閃爍藍光的0.8秒鐘周期內,前40個燈珠也是處于全熄滅狀態的。

使用“多線程”編程的話,會有什么樣的展示效果呢?將程序保存后再點擊“運行”按鈕,出現了三組燈珠互不干擾地以各自的頻率進行不同步閃爍的效果,而不是函數式的阻塞等待的執行方式。

三、掌控板:LED變色燈音樂節拍器

運行Mind+,先點擊左下角的“擴展”按鈕,將掌控板和“功能模塊”中的“多線程”添加至主界面;返回后,在“ESP32主程序”下的“循環執行”結構中添加啟動三個子線程,其中的“子線程1”只有一行“播放音樂”語句,并且其重復模式為“無限循環”,音樂可自行選擇Mind+內置的曲目(比如PRELUDE);“子線程2”實現的功能是控制OLED顯示屏根據聲音傳感器的檢測數據實時輸出多個柱狀音量的動態波形圖,包括設置線條的寬度和兩個坐標軸數據的繪制,特別需要注意的是,將“讀取麥克風聲音強度”數據進行映射運算——從0-4095映射為從50-0,并且需要添加“清屏”語句模塊(“屏幕顯示為‘全黑”);“子線程3”實現的功能是控制三支LED燈進行有規律的變色閃爍,發光顏色的隨機變化是由三個“在0和255之間取隨機數”的RGB值來動態實現的,兩個“等待0.2秒”的語句模擬控制的是LED燈的閃爍頻率,可根據所選曲目節奏的快慢來多次調試。

將程序保存為“多線程節拍.sb3”,然后連接好掌控板,再點擊“上傳到設備”按鈕進行程序的測試。當左下角出現“上傳成功”的提示后,掌控板開始有了“反應”:蜂鳴器循環播放程序設置好的音樂曲目,同時三支LED燈在不斷變換顏色地閃爍,而且在OLED顯示屏上有柱狀音量動態波形圖在不停地隨音樂的音量大小而跳動(如圖3)。

猜你喜歡
程序設置
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
7招教你手動設置參數
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
艦船人員編制的設置與控制
主站蜘蛛池模板: 国产网站免费| 国产永久免费视频m3u8| 热伊人99re久久精品最新地| 国产美女无遮挡免费视频网站 | 免费黄色国产视频| 午夜少妇精品视频小电影| 亚洲国产日韩在线成人蜜芽| 久久综合伊人77777| 国产美女在线免费观看| 老色鬼久久亚洲AV综合| 国产日韩欧美在线播放| 超清无码熟妇人妻AV在线绿巨人| 久久精品免费看一| 欧美精品在线观看视频| 在线免费a视频| 国产一区亚洲一区| 亚洲福利片无码最新在线播放| 97无码免费人妻超级碰碰碰| 麻豆精选在线| 97人妻精品专区久久久久| 亚洲一级毛片免费看| 欧美翘臀一区二区三区| 欧美精品一区在线看| 国产精品夜夜嗨视频免费视频| 波多野结衣久久精品| 九九热免费在线视频| 久996视频精品免费观看| 国产尤物在线播放| 精品撒尿视频一区二区三区| 亚洲首页在线观看| 日韩一区精品视频一区二区| 国产黄在线免费观看| 亚洲三级色| 九九这里只有精品视频| 欧美精品成人一区二区在线观看| 亚洲综合久久一本伊一区| 秋霞国产在线| 久久久久夜色精品波多野结衣| 东京热高清无码精品| 国产成人精品一区二区三在线观看| 国产成人综合网在线观看| 亚洲永久色| 婷五月综合| 色偷偷av男人的天堂不卡| 国产日韩久久久久无码精品| 国产人成在线观看| 国产av无码日韩av无码网站| 亚洲国产精品一区二区高清无码久久| 无码中文字幕乱码免费2| 综合成人国产| 欧美一区二区丝袜高跟鞋| 正在播放久久| 女人爽到高潮免费视频大全| 五月婷婷中文字幕| 国产美女免费| 亚洲AV无码精品无码久久蜜桃| 国产成人综合日韩精品无码首页| 亚洲AV无码乱码在线观看代蜜桃| 欧美日韩导航| 77777亚洲午夜久久多人| 成人自拍视频在线观看| 成人综合久久综合| 亚洲成人一区在线| 亚洲91在线精品| 四虎影视永久在线精品| 欧美在线精品一区二区三区| 国产精品吹潮在线观看中文| 欧美激情视频一区| 91在线播放国产| 2021国产精品自产拍在线观看| 欧美另类图片视频无弹跳第一页| 久久频这里精品99香蕉久网址| AV熟女乱| 六月婷婷综合| 国产精品视频3p| 女人天堂av免费| 国产精品9| 国产精品污视频| 日韩精品一区二区三区免费| 欧美人在线一区二区三区| 在线国产91| 国产成年女人特黄特色毛片免 |