python等待线程结束_如何等待线程完成后再继续
我需要在另一个线程中运行一个函数,并获取该函数的返回值以将其保存到主线程中的一个变量中。基本上,我的代码调用该函数,该函数通过串行端口与天平通信,等待并获取响应,解析响应,并以浮点形式返回响应。我需要捕捉这个浮动,这样我就可以保存它了。这是我的代码:from multiprocessing.pool import ThreadPool
pool = ThreadPool(processes=2)
result = pool.apply_async(manual_short_command, (self.status_signal2, self.conn, command, status_string, 2))
self.readout = result.get()
def manual_short_command(signal, conn, command, status_string, string_arg='', timeout=60):
""" Send specified command (expects a balance response)to balance through "conn" and emit status signal """
print "Command: " + command.strip('\r\n')
emit_status(signal, status_string[0], string_arg)
if not conn.isOpen():
conn.open()
# Wait until nothing can be read at the balance port
while not timeout and conn.readlines():
time.sleep(1)
timeout -= 1
# Write the command to the balance port and wait for response
while timeout:
time.sleep(1)
conn.write(command)
resp = conn.readlines()
try:
resp = float(resp[0])
except ValueError:
pattern = r'(.?\d+\.\d+)'
match = re.findall(pattern, resp[0])
resp = float(match[0])
except IndexError:
continue
print resp
print 'timeout: %s' % timeout
if resp:
emit_status(signal, status_string[1], str(resp))
print resp, 'here'
return resp
timeout -= 1
conn.close()
print resp
return resp
我在另一个线程中启动函数manual_short_command,这个函数通过串行端口发送一个命令并等待响应。然后它返回这个响应并将其写入状态浏览器(我使用PyQt4作为GUI,但我认为这是不相关的)。在
当我试图分配self.readout = result.get()时,我得到一个错误,说IndexError: list index out of range,这意味着该函数还没有在另一个线程中完成。在分配结果之前如何等待线程完成?否则我的程序挂起。我查看了Threading pool similar to the multiprocessing Pool?以获得一些指导,但是我找不到如何同步这两个线程。有什么建议吗?对不起,代码块太大了。在
python等待线程结束_如何等待线程完成后再继续相关推荐
- c++ 等待子线程结束_?进程、线程、以及它们之间的区别与联系
一.进程简介 1.1 进程概念的引入 计算机中,CPU是最宝贵的资源,为了提高CPU的利用率,引入了多道程序设计的概念.当内存中多个程序存在时,如果不对人们熟悉的"程序"的概念加以 ...
- c++ 等待子线程结束_进程和线程
1.进程的基本概念 进程简单说就是运行中的可执行文件.代码经过编译后生成二进制可执行文件,当运行该可执行文件时,代码被装载到内存中,然后CPU会执行程序中的指令. 有关进程调度,例如进程A,进程B,C ...
- java 等待线程池结束_如何等待java线程池中所有任务完成
一.等待线程池所有线程完成: 有时候我们需要等待java thread pool中所有任务完成后再做某些操作,如想要等待所有任务完成,仅需调用threadPool.awaitTermination() ...
- c++主线程等待子线程结束_简单明了的 Python 多线程来了 | 原力计划
作者 | 万里羊责编 | 王晓曼出品 | CSDN博客线程和进程计算机的核心是CPU,它承担了所有的计算任务,就像是一座工厂在时刻运行.如果工厂的资源有限,一次只能供一个车间来使用,也就是说当一个车间 ...
- python判断线程结束_判断Threading.start新线程是否执行完毕的实例
新写自己的Threading类 class MyThread(threading.Thread):#我的Thread类 判断流程结束没 用于os shell命令是否执行判断 def __init__( ...
- python的多线程应用前景_什么是线程(多线程),Python多线程的好处
几乎所有的操作系统都支持同时运行多个任务,一个任务通常就是一个程序,每一个运行中的程序就是一个进程.当一个程序运行时,内部可能包含多个顺序执行流,每一个顺序执行流就是一个线程. 线程和进程 几乎所有的 ...
- python协程等待执行完成_异步等待的 Python 协程
现在 Python 已经支持用协程进行异步处理.但最近有建议称添加协程以全面完善 Python 的语言结构,而不是像现在这样把他们作为生成器的一个类型.此外,两个新的关键字---异步(async)和等 ...
- java timer 线程安全_多线程之 线程安全与控制
线程控制 wait和notify方法需要注意的细节:wait方法与notify方法必须要由同一个锁对象调用.因为:对应的锁对象可以通过notify唤醒使用同一个锁对 象调用的wait方法后的线程. w ...
- JAVA线程池_并发队列工作笔记0003---线程池的分类_可缓存线程池_定长线程池_定时线程池_单例线程池
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 这里说线程池的分类 有可缓存类型, 定长类型, 定时类型, 单例类型, 这里我这次用Executo ...
最新文章
- maven插件的使用
- systemd系统服务管理详解
- VS中stack around the variable ‘****‘ was corrupted堆栈被破坏
- mybatis传递多个参数_Mybatis传递多个参数的4种方式(干货)
- 1262. 可被三整除的最大和(贪心||动态规划)
- .NET Core 取消令牌:CancellationToken
- 内存管理(ybtoj-二叉堆)
- Leetcode--42.接雨水
- 11988 - Broken Keyboard (a.k.a. Beiju Text)
- 华为中国生态大会2021举行在即,GaussDB将重磅发布5大解决方案
- 【LeetCode】【refine 1】题号:1. 两数之和
- 异常处理-try catch
- Web渗透测试实战——(1)Web渗透测试简介
- VUE后台管理中使用富文本编辑器导入word 文档进行编辑
- UEFI——PCI/PCIe
- python提取文字的轮廓_opencv 轮廓提取文字
- 新手学习python零基础_一个零基础新手学习Python应该知道的学习步骤与规划
- 从头开始搞懂 MySQL(07)为什么同一条 SQL 时快时慢
- 10大耗油,10大省油。
- android x86酷狗音乐,酷狗音乐怀旧版