supper_boss 2021-09-28 07:57 采纳率: 66.7%
浏览 49
已结题

python问题,threading多线程如何实现

主要代码如下,执行后,here会打印3次,但是 timer对应的函数只调用了1次,请问是什么情况


            names = locals()
            thread_list = []
            for thread_i in range(3):
                names['th'+str(thread_i )] = threading.Thread(target=self.timer.start(500))
                thread_list .append(names['th'+str(thread_i )])
                names['th'+str(thread_i )].start()
                print("here")
  • 写回答

2条回答 默认 最新

  • 唯妮 2021-09-28 09:27
    关注

    我都看不到你调用timer的代码
    代码不全面,不好看问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    supper_boss 2021-09-28 09:31

    
    class TestTools(QMainWindow, Ui_Form):
        def __init__(self):
            """初始化pyqt5框架"""
            super(TestTools, self).__init__()
            self.setupUi(self)
            kafka_producer_send_num = 0
            try:
                global timer
                self.timer = QTimer(self)
                self.timer.timeout.connect(self.kafka_producer)  # 计时器挂接到槽:update
                self.pushButton_kafka_producer_text_send.clicked.connect(self.kafka_producer_start)
            except Exception as e:
                traceback.print_exc()
                print(e)
    
       
        def kafka_producer_start(self):
            try:
                global kafka_producer_num
                global kafka_producer_time_start
                global kafka_producer_interval
                self.kafka_producer_time_start = str(datetime.datetime.now())
                self.kafka_producer_interval = self.lineEdit_kafka_producer_interval.text()
                kafka_producer_num = self.lineEdit_kafka_producer_num.text()
                global kafka_producer_i
                self.kafka_producer_i = 0
                self.kafka_producer_send_num = 0
                kafka_producer_thread_list = []
                for kafka_producer_thread_i in range(3):
                    th = threading.Thread(target=self.timer.start(int(self.kafka_producer_interval)))
                    kafka_producer_thread_list.append(th)
                    th.start()
    
            except Exception as e:
                traceback.print_exc()
    
        def kafka_producer_start_thread(self):
            try:
                self.timer.start(int(self.kafka_producer_interval))
            except Exception as e:
                traceback.print_exc()
    
        def kafka_producer(self):
            try:
                print("here")
            except Exception as e:
                traceback.print_exc()
    
    
    if __name__ == "__main__":
        start = time.perf_counter()
        app = QApplication(sys.argv)
        app.processEvents()
        # 初始化
        myWin = TestTools()
        # 将窗口控件显示在屏幕上
        myWin.show()
        splash.finish(myWin)
        # 程序运行,sys.exit方法确保程序完整退出。
        sys.exit(app.exec_())
    
    

    回复
    supper_boss 2021-09-28 09:39

    现在是想,点一下pushButton_kafka_producer_text_send按钮,能并发执行timer对应的函数

    回复
    展开全部10条评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 10月6日
  • 已采纳回答 9月29日
  • 创建了问题 9月28日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部