在多个进程之间共享数据不会在python for windows中执行共享行为
我试图在一些不同的进程之间共享一些数据,并且遵循python文档 在本节中,我将从他们提供的以下代码开始,以说明在流程之间共享数据的方式在多个进程之间共享数据不会在python for windows中执行共享行为,python,multiprocessing,shared-memory,Python,Multiprocessing,Shared Memory,我试图在一些不同的进程之间共享一些数据,并且遵循python文档 在本节中,我将从他们提供的以下代码开始,以说明在流程之间共享数据的方式 from multiprocessing import Process, Value, Array def f(n, a): n.value = 3.1415927 for i in range(len(a)): a[i] = -a[i] if __name__ == '__main__': num = Value(
from multiprocessing import Process, Value, Array
def f(n, a):
n.value = 3.1415927
for i in range(len(a)):
a[i] = -a[i]
if __name__ == '__main__':
num = Value('d', 0.0)
arr = Array('i', range(10))
p = Process(target=f, args=(num, arr))
p.start()
p.join()
print(num.value)
print(arr[:])
根据文件,输出应为:
3.1415927
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
但是,当我运行这段代码时,我得到了不同的结果:
0.0
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
我在Windows10和Python3.6上测试它
这意味着共享无法正常工作,我尝试调试以了解问题的确切原因,发现P.start()
无法调用函数f
为什么它的性能不如预期
更新:
我在ubuntu中测试了相同的代码,它运行得非常好,这意味着问题出在windows上,但我不明白windows为什么会出现这样的问题它正在我的系统上运行(windows,Python 3.7)。因此,这不是代码的问题(将其复制到文件中)。你用的是什么系统?事实上,我刚刚试着用Ubuntu18编写,它运行得很好,但首先它在windows和python 3.6中不起作用。你用的是Jupyter笔记本还是其他交互式python?在这种情况下,您需要导入流程中使用的函数:如果这是您的案例,我可以编写一个答案。首先,我尝试了spider,然后,我尝试了windows命令提示符,但这两个命令都不起作用