Python 多线程与进程:环境、执行与交互
1. 线程结果轮询策略
在多线程编程中,主线程如何获取工作线程的结果是一个关键问题。一种广泛适用的通用策略是主线程进行轮询,即定期检查结果队列的状态。
在大多数类 Unix 平台上,可以使用 signal 模块的 alarm 函数进行轮询。而 Tkinter GUI 工具包则提供了 after 方法用于轮询。不过,虽然有些工具包和平台提供了更有效的策略,能让工作线程在将结果放入结果队列时通知主线程,但目前并没有通用的跨平台、跨工具包的实现方式。
下面是一个模拟工作线程执行随机表达式计算的示例代码:
import random, time
def makeWork():
return "%d %s %d" % (random.randrange(2, 10),
random.choice(('+', '-', '*', '/', '%', '**')),
random.randrange(2, 10))
def slowEvaluate(expressionString):
time.sleep(random.randrange(1, 5))
return eval(expressionString)
workRequests = {}
def showResults():
while 1:
超级会员免费看
订阅专栏 解锁全文
3639

被折叠的 条评论
为什么被折叠?



