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到父进程? 展开
def h():
s = '11'
thread.start_new_thread(h,())
print s
请问如何返回线程h中的s到父进程? 展开
2个回答
展开全部
在python里线程是不受控的。 java里也是有限受控。 windows里线程本来就不受控。只有进程可以控制。 所以线程启动后要通过变量来取到返回值。
不过考虑到访问冲突问题,通常通过事情消息机制,以及queue的方式,把数据传递出来。
象wode5130的这种方式。也可以考虑。不过建议试验后再明确。
python里的线程实际上是微线程。也就是说,它与主进程是由python解释器通过轮洵执行的。 但是这个微线程同时又是标准的windows线程。这就涉及到python中的GIL,一个全局执行锁的问题。
所以用global s这种方式是行得通的,因为它们都在同一个变量空间内。
如果有多个线程就不成了。 多个线程都给S赋值。会造成赋值间隙中的空白。不知道是为什么,不过的确有时候,取不到正确的值。
不过考虑到访问冲突问题,通常通过事情消息机制,以及queue的方式,把数据传递出来。
象wode5130的这种方式。也可以考虑。不过建议试验后再明确。
python里的线程实际上是微线程。也就是说,它与主进程是由python解释器通过轮洵执行的。 但是这个微线程同时又是标准的windows线程。这就涉及到python中的GIL,一个全局执行锁的问题。
所以用global s这种方式是行得通的,因为它们都在同一个变量空间内。
如果有多个线程就不成了。 多个线程都给S赋值。会造成赋值间隙中的空白。不知道是为什么,不过的确有时候,取不到正确的值。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询