<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      python類、線程、定時、信號量、窗體簡單構建

      線程

      import threading
      print("# 啟動串口線程")
      serial_worker = threading.Thread(target=new_def_function, daemon=True)
      serial_worker.start()
      

      線程阻塞

      import threading
      import time
      print("# 創建一個信號量對象,允許同時有 2 個線程訪問資源")
      semaphore = threading.Semaphore(1)
      print("# 定義一個函數作為線程的執行體")
      def worker_thread(name):
          while(True):
              print(f"{name} 線程正在等待獲取信號量...")
              semaphore.acquire()
              try:
                  print(f"{name} 線程已獲取信號量,開始執行")
                  time.sleep(2)  # 模擬耗時操作
                  print(f"{name} 線程執行完畢,釋放信號量\n")
              finally:
                  semaphore.release()
      serial_worker = threading.Thread(target=worker_thread,args=(f"線程",), daemon=True)
      serial_worker.start()
      while(True):
          semaphore.acquire()
          print("主函數while")
          time.sleep(1)
          print("主函數whileOK\n")
          # # 釋放兩次信號量,相當于喂兩次狗
          # semaphore.release()
          semaphore.release()
          time.sleep(0.1)
      

      通過 ** semaphore = threading.Semaphore(1) **初值和 ** semaphore.acquire()、semaphore.release() 實現,也可以,通過 ** event = threading.Event() 和 ** event.set() **,以及 ** event.wait()、event.clear() **實現。

      # 創建一個事件對象,用于線程間的同步
      event = threading.Event()
      def worker_thread(name):
          while True:
              print(f"--{name} 線程正在等待喂狗...")
              # 等待事件被設置
              event.wait()
              # 事件被設置后,重置事件
              event.clear()
              try:
                  print(f"{name} 線程開始執行")
      while True:
          # 設置事件,通知子線程可以執行
          event.set()
          if event_begin.is_set():
                  print("event_begin 已被設置,主程序繼續執行")
          print("==主函數喂狗\n")
      

      線程_定時器

      def repeatead_timer(interval, function, *args, **kwargs):
          stopped = threading.Event()
      
          def loop():
              while not stopped.wait(interval):
                  function(*args, **kwargs)
          threading.Thread(target = loop).start()
          return stopped
      timer_stopped = repeatead_timer(0.5, window.myhandle)   類中函數
      

      窗體

      from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QPushButton, QComboBox, QVBoxLayout, QWidget, QLineEdit, QHBoxLayout
      from PyQt5.QtWidgets import QSpacerItem, QTextEdit
      class SerialReader(QMainWindow):# 2. 主窗口類定義 - SerialReader1
          def __init__(self):
              super().__init__()
              self.init_ui()# 2.1 界面初始化 - init_ui
              self.connect_signals()
          def init_ui(self):
              self.setWindowTitle("串口數據讀取 - 經緯度顯示")
              print("# 查找可用串口并添加到下拉框")
              port_names = ["1","2","3","4"]  # ports = list_ports.comports(); [port.device for port in ports]
              self.serial_port_combobox_s1 = QComboBox(self)
              self.serial_port_combobox_s1.addItems(port_names)
      
              left_layout = QVBoxLayout()
              port_layout = QHBoxLayout()
              port_layout.addWidget(QLabel("串口_S1:"))
              port_layout.addWidget(self.serial_port_combobox_s1)
      
              left_layout.addLayout(port_layout)
      
              main_layout = QHBoxLayout()
              main_layout.addLayout(left_layout)
      
              spacer = QSpacerItem(20, 20 * 3)
              main_layout.addItem(spacer)
      
              central_widget = QWidget()
              central_widget.setLayout(main_layout)
              self.setCentralWidget(central_widget)
          def add_data(self):  # self.
              self.update_plot(100)
          def update_plot(self,f):
              pass
          def connect_signals(self):
              self.serial_port_combobox_s1.currentIndexChanged.connect(self.toggle_serial_reading)
          def toggle_serial_reading(self):
              print("hello")
      import sys
      if __name__ == "__main__":
          try:
              app = QApplication(sys.argv)
              window = SerialReader()
              window.show()
              sys.exit(app.exec_())
          except KeyboardInterrupt:
              print("程序終止")
      

      posted on 2025-04-29 15:26  泰勒冪級數  閱讀(13)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 亚洲av本道一区二区| 免费人成在线视频无码| 天堂av色综合久久天堂| 性色在线视频精品| 国产成人亚洲精品狼色在线| 老太脱裤子让老头玩xxxxx| 久久er99热精品一区二区| av无码精品一区二区乱子| 久久人人97超碰人人澡爱香蕉 | 亚洲综合天堂av网站在线观看| 国产精品色一区二区三区| 正在播放的国产A一片| 国产对白老熟女正在播放| 麻豆久久久9性大片| 国产免费无遮挡吸乳视频在线观看| 欧美做受视频播放| 无码福利写真片视频在线播放| 望都县| 国产绿帽在线视频看| 国产亚洲第一精品| 欧美做受视频播放| 无套内谢少妇一二三四| 久久99国产精品尤物| 日韩美av一区二区三区| 国产精品va在线观看无码| 亚洲国产激情一区二区三区| 久久精品人妻无码专区| 午夜免费无码福利视频麻豆| 国产不卡的一区二区三区| 久久精品国产精品亚洲毛片| 伊人成人在线视频免费| 色窝窝免费一区二区三区| 亚洲乱码日产精品一二三| 亚洲人成网网址在线看| 男女动态无遮挡动态图| 激情久久av一区二区三区| 无码伊人久久大杳蕉中文无码| 亚洲欧美电影在线一区二区| 成全影视大全在线观看| 天堂网av一区二区三区| 丰满少妇内射一区|