Python中文
首页
教程
问答
标签
搜索
登录
注册
在Python中处理阻塞函数调用
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我在和<a href="http://gnuradio.org/redmine/wiki/gnuradio" rel="nofollow">Gnuradio framework</a>一起工作。我处理生成的用于发送/接收信号的流程图。这些流图初始化并启动,但不会将控制流返回到我的应用程序:</p> <p>我导入了<code>time</code></p> <pre><code>while time.time() < endtime: # invoke GRC flowgraph for 1st sequence if not seq1_sent: tb = send_seq_2.top_block() tb.Run(True) seq1_sent = True if time.time() < endtime: break # invoke GRC flowgraph for 2nd sequence if not seq2_sent: tb = send_seq_2.top_block() tb.Run(True) seq2_sent = True if time.time() < endtime: break </code></pre> <p>问题是:只有第一个if语句调用流图(与硬件交互)。我被困在这里面了。我可以使用一个线程,但我没有经验如何在Python中超时线程。我怀疑这是可能的,因为似乎杀死线程不在api中。这个脚本只需要在Linux上运行。。。</p> <p>如何正确地使用Python处理阻塞函数-而不杀死整个程序。 另一个更具体的例子是:</p> <pre><code>import signal, os def handler(signum, frame): # print 'Signal handler called with signal', signum #raise IOError("Couldn't open device!") import time print "wait" time.sleep(3) def foo(): # Set the signal handler and a 5-second alarm signal.signal(signal.SIGALRM, handler) signal.alarm(3) # This open() may hang indefinitely fd = os.open('/dev/ttys0', os.O_RDWR) signal.alarm(0) # Disable the alarm foo() print "hallo" </code></pre> <p>我怎么还能得到<code>print "hallo"</code>。;)</p> <p>谢谢, 马吕斯</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>IIUC,每个顶层块都有一个停止方法。因此,您实际上可以在线程中运行top_块,并在超时到达时发出停止。如果top_块的wait()也有超时,那会更好,但唉,它没有</p> <p>在主线程中,您需要等待两种情况:a)top_块完成,b)超时过期。繁忙的等待是邪恶的:-),因此您应该使用线程的join with timeout来等待线程。如果连接后线程仍处于活动状态,则需要停止顶部运行。</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
Python中两个字典的交集
2 回答
python中两个字符串上的异或操作数?
9 回答
Python中两个字符串中的类似句子
3 回答
Python中两个字符串之间的Hamming距离
1 回答
python中两个字符串之间的匹配模式
8 回答
python中两个字符串之间的按位或
8 回答
python中两个字符串之间的数据(字节)切片
7 回答
python中两个字符串之间的模式
5 回答
python中两个字符串作为子字符串的区别
4 回答
Python中两个字符串元组的比较
6 回答
Python中两个字符串列表中的公共字符串
9 回答
python中两个字符串的Anagram测试
10 回答
Python中两个字符串的正则匹配
1 回答
python中两个字符串的笛卡尔乘积
8 回答
Python中两个字符串相似性的比较
3 回答
python中两个字符串语义相似度的求法
10 回答
Python中两个字符置换成固定长度的字符串,每个字符的数目相等
4 回答
Python中两个对数方程之间的插值和平滑数据
4 回答
Python中两个对象之间的And/Or运算符
3 回答
python中两个嵌套字典中相似键的和值
9 回答