上下文:

我正在用Qt creator和python中的“behavior”文件构建一个图形界面。我的GUI的测试版本是:

预期行为:

我正在运行两个不同的线程,它们被引用到同一个函数,具有不同的输入参数。使用选择器按钮,我可以给变量赋值1或2(并显示它)

按钮启动线程允许正确的线程启动(第一次)。

应该通过修改全局running变量来关闭循环。

这是我的密码# -*- coding: utf-8 -*-

from PyQt4 import QtCore, QtGui, uic

import sys

import threading

import time

import Queue

running = False

first_thread = None

second_thread = None

form_class = uic.loadUiType("simple2.ui")[0]

q = Queue.Queue()

select = 0

def action(string, queue): #function called by threads

global running

while(running):

phrase = string

if queue.qsize() < 10:

queue.put(phrase)

#else:

# print queue.qsize()

class MyWindowClass(QtGui.QMainWindow, form_class):

def __init__(self, parent=None):

QtGui.QMainWindow.__init__(self, parent)

self.setupUi(self)

#buttons

self.startButton.clicked.connect(self.start_clicked)

self.stopButton.clicked.connect(self.stop_clicked)

self.selector.clicked.connect(self.sel_click)

#variables

self.first = False

self.second = False

#queue

self.timer = QtCore.QTimer(self)

self.timer.timeout.connect(self.update_phrase)

self.timer.start(1)

def start_clicked(self): #start button callback

global select

if select > 0:

global running

running = True

print "started"

if (not self.first) & (select == 1):

first_thread.start()

self.first = True

if (not self.second) & (select == 2):

second_thread.start()

self.second = True

self.startButton.setEnabled(False)

self.startButton.setText('Starting...')

def stop_clicked(self): #stop button callback

global running

running = False

print "stopped"

self.startButton.setEnabled(True)

self.startButton.setText('Start Thread')

def sel_click(self): #selector button callback

global select

if select < 2:

select = select + 1

else:

select = 1

self.thread_counter.setText(str(select))

def update_phrase(self): #looping function

global running

if (not q.empty()) & running:

self.startButton.setText('Thread on')

abc = q.get()

print abc

def closeEvent(self, event):

global running

running = False

if __name__ == "__main__":

first_thread = threading.Thread(target=action, args = ("first", q))

second_thread = threading.Thread(target=action, args = ("second", q))

app = QtGui.QApplication(sys.argv)

w = MyWindowClass(None)

w.setWindowTitle('Multiple threads test in python')

w.show()

app.exec_()

现在,每个线程应该在终端上简单地打印它们的参数(“第一个”或“第二个”)。

如果线程是第一次启动的,我的代码可以工作。但我想在线程之间无限次地切换。在

既然线程无法停止,有没有办法“暂停”它们?

我找不到解决方案,我希望有人也能帮我一段代码。提前谢谢你

python强制暂停线程_如何暂停线程(python)相关推荐

  1. python的多线程应用前景_什么是线程(多线程),Python多线程的好处

    几乎所有的操作系统都支持同时运行多个任务,一个任务通常就是一个程序,每一个运行中的程序就是一个进程.当一个程序运行时,内部可能包含多个顺序执行流,每一个顺序执行流就是一个线程. 线程和进程 几乎所有的 ...

  2. python可以启动多少线程_今天来讲讲python(GLI)

    什么是GLI? Python中的线程是操作系统的原生线程,Python虚拟机使用一个全局解释器锁(Global Interpreter Lock)来互斥线程对Python虚拟机的使用.为了支持多线程机 ...

  3. python刷题软件_教你用python写:HDU刷题神器

    声明:本文以学习为目的,请不要影响他人正常判题 HDU刷题神器,早已被前辈们做出来了,不过没有见过用python写的.大一的时候见识了学长写这个,当时还是一脸懵逼,只知道这玩意儿好屌-.时隔一年,决定 ...

  4. python语言运行效率高_如何评价说PYTHON是最快的语言?

    我是视频的作者,首先感谢朋友们的关注,并且诞生了这个论题,让我可以看到大家对我视频中的观点的反馈.对于大家的讨论,在日常时间允许的条件下,我会尽量参与.下面就我目前已经看到的朋友们的评论,做一下展开. ...

  5. python 性能并不慢_关于性能:Python多处理队列比pool.map慢

    我最近开始尝试多处理以加快任务速度.我创建了一个脚本,该脚本执行模糊字符串匹配,并使用不同的算法来计算分数(我想比较不同的匹配技术).您可以在这里找到完整的源代码:https://bitbucket. ...

  6. 我的python学习笔记全集_记录我的Python学习笔记

    不想再像以前那样,什么都从头开始学习语法.总结语法,这样反而会过分纠结于语法,耽误了开发,毕竟语言的主要属性是工具,次要的属性是语言本身. 所以还是先熟练使用语言去进行开发,等足够熟悉了,再去研究语言 ...

  7. python split函数 空格_最易懂的Python新手教程:从基础语法到代码详解

    导读:本文立足基础,讲解Python和PyCharm的安装,及Python最简单的语法基础和爬虫技术中所需的Python语法. 作者:罗攀 蒋仟 如需转载请联系华章科技 本文涉及的主要知识点如下: P ...

  8. python怎么打日志_怎样调试 日志 python 代码

    展开全部 使用 pdb 进行调试 pdb 是 python 自带e5a48de588b662616964757a686964616f31333361306366的一个包,为 python 程序提供了一 ...

  9. c++中的引用和python中的引用_对比 C++ 和 Python,谈谈指针与引用

    作者 | 樱雨楼 引言 指针(Pointer)是 C.C++ 以及 Java.Go 等语言的一个非常核心且重要的概念,而引用(Reference)是在指针的基础上构建出的一个同样重要的概念. 指针对于 ...

最新文章

  1. php 点击按钮更新mysql_PHP与mysql超链接 有更新按钮 跳转更新,删除后数据表中的数据 怎么做来着?...
  2. Ubuntu安装中文语言包
  3. leetcode :动态规划
  4. Java学习 第三章 数组(一)一维数组
  5. 用批处理开启或关闭windows 服务
  6. Github 插件之 Octotree 报错介绍与解决
  7. web结课大作业结业报告(附源码及展示效果)
  8. android 发送UDP广播,搜寻服务器建立socket链接
  9. html5新浪微博代码,JS实现的新浪微博大厅文字内容滚动效果代码
  10. bitmap 设置图片尺寸,避免 内存溢出 OutOfMemoryError的优化方法
  11. “蔚来杯“2022牛客暑期多校训练营5 A:Don‘t Starve
  12. python小白社区_Python小白教学系列| 初识python-Go语言中文社区
  13. echarts 报错Failed to execute 'createRadialGradient' on 'CanvasRenderingContext2D': The provided doubl
  14. matlab中clock是什么,matlab中的clock
  15. python_操作MySQL 初解 之__类方法调用并 增-删-改-查
  16. pytorch第06天 图片分类器
  17. 2018年上海人工智能大会(SHAI2018)即将在上海举行
  18. win10c语言乱码修复方法,软件乱码 教你win10系统打开软件乱码的修复技巧
  19. FFmpeg入门详解之119:FFmpeg的SDK编程回顾总结并操练
  20. 计算机二级python基础知识总结-江苏省计算机二级python样卷

热门文章

  1. Web基础:Token
  2. 2021年茶艺师(中级)报名考试及茶艺师(中级)考试报名
  3. 新工作入职2个月小结
  4. python-opencv之图像梯度Sobel、Scharr、Laplacian算子边缘检测
  5. 说说我们项目组的例行会议
  6. 新手练习作品,请多多指教,推箱子小游戏
  7. maven optional
  8. Ubuntu根目录终极清理
  9. Ubuntu12.04 讯雷安装与使用
  10. ASP.NET Core 中如何通过 AuthorizeAttribute 做自定义验证?