Using Python 2.7.3 on Windows.
我如何共享变量num
线程之间,这样,之后num
是平方的,是打印出来的?
我意识到我需要了解线程是如何工作的,但是文档没有太多,而且我在这里也没有找到任何东西..
那么,有人可以解释线程如何工作以及如何在两个线程之间共享变量吗?
我的代码(不断打印2
)
import threading
def func1(num):
while num < 100000000:
num = num**2
def func2(num):
while num < 100000000:
print num,
num = 2
thread1 = threading.Thread(target=func1,args=(num,))
thread2 = threading.Thread(target=func2,args=(num,))
print 'setup'
thread1.start()
thread2.start()
这个问题的一般答案是队列:
import threading, queue
def func1(num, q):
while num < 100000000:
num = num**2
q.put(num)
def func2(num, q):
while num < 100000000:
num = q.get()
print num,
num = 2
q = queue.Queue()
thread1 = threading.Thread(target=func1,args=(num,q))
thread2 = threading.Thread(target=func2,args=(num,q))
print 'setup'
thread1.start()
thread2.start()
printing
=== pu@pumbair:~/StackOverflow:507 > ./tst.py
setup
4 16 256 65536 4294967296
请注意,在此(和您的)代码中,num 是 func1 和 func2 中的局部变量,除了它们接收全局变量 num 的初始值之外,它们彼此没有任何关系。所以数字是not在这里分享。相反,一个线程将其 num 的值放入队列中,另一个线程将该值绑定到同名的本地(因此不同)变量。但当然它可以使用任何名称。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)