python强制暂停线程_如何暂停线程(python)
上下文:
我正在用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)相关推荐
- python的多线程应用前景_什么是线程(多线程),Python多线程的好处
几乎所有的操作系统都支持同时运行多个任务,一个任务通常就是一个程序,每一个运行中的程序就是一个进程.当一个程序运行时,内部可能包含多个顺序执行流,每一个顺序执行流就是一个线程. 线程和进程 几乎所有的 ...
- python可以启动多少线程_今天来讲讲python(GLI)
什么是GLI? Python中的线程是操作系统的原生线程,Python虚拟机使用一个全局解释器锁(Global Interpreter Lock)来互斥线程对Python虚拟机的使用.为了支持多线程机 ...
- python刷题软件_教你用python写:HDU刷题神器
声明:本文以学习为目的,请不要影响他人正常判题 HDU刷题神器,早已被前辈们做出来了,不过没有见过用python写的.大一的时候见识了学长写这个,当时还是一脸懵逼,只知道这玩意儿好屌-.时隔一年,决定 ...
- python语言运行效率高_如何评价说PYTHON是最快的语言?
我是视频的作者,首先感谢朋友们的关注,并且诞生了这个论题,让我可以看到大家对我视频中的观点的反馈.对于大家的讨论,在日常时间允许的条件下,我会尽量参与.下面就我目前已经看到的朋友们的评论,做一下展开. ...
- python 性能并不慢_关于性能:Python多处理队列比pool.map慢
我最近开始尝试多处理以加快任务速度.我创建了一个脚本,该脚本执行模糊字符串匹配,并使用不同的算法来计算分数(我想比较不同的匹配技术).您可以在这里找到完整的源代码:https://bitbucket. ...
- 我的python学习笔记全集_记录我的Python学习笔记
不想再像以前那样,什么都从头开始学习语法.总结语法,这样反而会过分纠结于语法,耽误了开发,毕竟语言的主要属性是工具,次要的属性是语言本身. 所以还是先熟练使用语言去进行开发,等足够熟悉了,再去研究语言 ...
- python split函数 空格_最易懂的Python新手教程:从基础语法到代码详解
导读:本文立足基础,讲解Python和PyCharm的安装,及Python最简单的语法基础和爬虫技术中所需的Python语法. 作者:罗攀 蒋仟 如需转载请联系华章科技 本文涉及的主要知识点如下: P ...
- python怎么打日志_怎样调试 日志 python 代码
展开全部 使用 pdb 进行调试 pdb 是 python 自带e5a48de588b662616964757a686964616f31333361306366的一个包,为 python 程序提供了一 ...
- c++中的引用和python中的引用_对比 C++ 和 Python,谈谈指针与引用
作者 | 樱雨楼 引言 指针(Pointer)是 C.C++ 以及 Java.Go 等语言的一个非常核心且重要的概念,而引用(Reference)是在指针的基础上构建出的一个同样重要的概念. 指针对于 ...
最新文章
- php 点击按钮更新mysql_PHP与mysql超链接 有更新按钮 跳转更新,删除后数据表中的数据 怎么做来着?...
- Ubuntu安装中文语言包
- leetcode :动态规划
- Java学习 第三章 数组(一)一维数组
- 用批处理开启或关闭windows 服务
- Github 插件之 Octotree 报错介绍与解决
- web结课大作业结业报告(附源码及展示效果)
- android 发送UDP广播,搜寻服务器建立socket链接
- html5新浪微博代码,JS实现的新浪微博大厅文字内容滚动效果代码
- bitmap 设置图片尺寸,避免 内存溢出 OutOfMemoryError的优化方法
- “蔚来杯“2022牛客暑期多校训练营5 A:Don‘t Starve
- python小白社区_Python小白教学系列| 初识python-Go语言中文社区
- echarts 报错Failed to execute 'createRadialGradient' on 'CanvasRenderingContext2D': The provided doubl
- matlab中clock是什么,matlab中的clock
- python_操作MySQL 初解 之__类方法调用并 增-删-改-查
- pytorch第06天 图片分类器
- 2018年上海人工智能大会(SHAI2018)即将在上海举行
- win10c语言乱码修复方法,软件乱码 教你win10系统打开软件乱码的修复技巧
- FFmpeg入门详解之119:FFmpeg的SDK编程回顾总结并操练
- 计算机二级python基础知识总结-江苏省计算机二级python样卷