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
艦船人員編制的設置與控制
主站蜘蛛池模板: 国产无套粉嫩白浆| 国产手机在线观看| аv天堂最新中文在线| 国产va免费精品观看| 91年精品国产福利线观看久久| 亚洲综合经典在线一区二区| 国产爽歪歪免费视频在线观看| 第一页亚洲| 小说区 亚洲 自拍 另类| 67194在线午夜亚洲| 久久国产高潮流白浆免费观看| 色综合激情网| 亚洲日韩久久综合中文字幕| 国产欧美中文字幕| 黄色片中文字幕| 大学生久久香蕉国产线观看 | 欧美精品1区| 国产9191精品免费观看| 亚洲区第一页| 精品夜恋影院亚洲欧洲| 91娇喘视频| 精品福利网| 中文字幕日韩丝袜一区| 91久久性奴调教国产免费| www.国产福利| 自拍偷拍欧美日韩| 综合久久五月天| 天天婬欲婬香婬色婬视频播放| 亚洲综合精品香蕉久久网| 国产精品亚洲一区二区三区z| 国产激爽爽爽大片在线观看| 亚洲欧洲日产国产无码AV| 国产日本一线在线观看免费| 国产成年无码AⅤ片在线| 国产91导航| 午夜毛片免费观看视频 | 中文字幕欧美日韩高清| 亚洲天堂免费在线视频| 青青网在线国产| 在线毛片网站| 亚洲国产日韩一区| 亚洲日韩在线满18点击进入| 九九热免费在线视频| 91久久国产热精品免费| 日韩在线观看网站| 久草青青在线视频| 日韩精品一区二区深田咏美| 在线观看热码亚洲av每日更新| 99精品国产自在现线观看| 欧美在线视频a| 国产精品视频a| 亚洲三级色| 中文字幕无码av专区久久| 青青草原国产精品啪啪视频| 久久综合干| 国产日韩欧美中文| 东京热高清无码精品| 亚洲美女视频一区| 91久草视频| 国产精品成人免费综合| 亚洲永久精品ww47国产| 超碰色了色| 欧美 国产 人人视频| 午夜啪啪福利| 夜夜操国产| 国产高清在线观看91精品| 欧美三级自拍| 亚洲啪啪网| 久久精品国产在热久久2019| 国产成人无码AV在线播放动漫| 亚洲av片在线免费观看| 国产99在线观看| 婷婷激情五月网| 日本在线国产| 一区二区欧美日韩高清免费| 国产精女同一区二区三区久| 5555国产在线观看| 国产三级毛片| 天堂在线亚洲| 久久综合伊人 六十路| 蜜桃臀无码内射一区二区三区 | 免费激情网址|