这是在python中测试多处理的简单代码。f()每秒钟打印一对整数,如果f()的输出超过阈值,monitor()将打印警告。你知道吗
#!/usr/bin/python
from multiprocessing import Process
import time
def f():
global y
n = 20
for i in range (n):
y = i
print y
time.sleep(1)
def monitor():
n = 20
for i in range(20):
if y >= 10:
print 'y is greater than 10.'
time.sleep(1)
if __name__ == '__main__':
p1 = Process(target = f, args = ())
p2 = Process(target = monitor, args = ())
p1.start()
p2.start()
p1.join()
p2.join()
问题是当我执行这段代码时什么也没有发生。我连个错误都没有。我怎样才能解决这个问题? 如果我使用线程而不是多重处理,同样的过程也能很好地工作,但是我也希望能够用多重处理做同样的事情。你知道吗
python 2.7.6版
操作系统:windows 7
所以我运行你的代码时会出错。这是因为
global y
不是在进程之间共享的。在使用多处理程序包时,必须显式地为进程间通信预留共享内存。您可以使用同步的Value
实例来实现这一点。你知道吗所以你的代码应该是:
相关问题 更多 >
编程相关推荐