python的线程如何返回值?

importthreaddefh():s='11'thread.start_new_thread(h,())prints请问如何返回线程h中的s到父进程?... import thread
def h():
s = '11'
thread.start_new_thread(h,())
print s

请问如何返回线程h中的s到父进程?
展开
 我来答
bdwisyou7d
2013-01-10 · TA获得超过1.3万个赞
知道大有可为答主
回答量:3774
采纳率:81%
帮助的人:1082万
展开全部
在python里线程是不受控的。 java里也是有限受控。 windows里线程本来就不受控。只有进程可以控制。 所以线程启动后要通过变量来取到返回值。

不过考虑到访问冲突问题,通常通过事情消息机制,以及queue的方式,把数据传递出来。

象wode5130的这种方式。也可以考虑。不过建议试验后再明确。

python里的线程实际上是微线程。也就是说,它与主进程是由python解释器通过轮洵执行的。 但是这个微线程同时又是标准的windows线程。这就涉及到python中的GIL,一个全局执行锁的问题。

所以用global s这种方式是行得通的,因为它们都在同一个变量空间内。

如果有多个线程就不成了。 多个线程都给S赋值。会造成赋值间隙中的空白。不知道是为什么,不过的确有时候,取不到正确的值。
wode5130
推荐于2016-01-31 · TA获得超过638个赞
知道小有建树答主
回答量:423
采纳率:100%
帮助的人:336万
展开全部
import thread
s = 0

def h():
global s

s = '11'
thread.start_new_thread(h,())
print s
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式