python中共享内存的问题没有进入功能



所以我有arg解析,它调用file.py在它中,我有一个父函数,它使子函数使用多处理过程我一开始有共享内存,但无法访问。

这不是真正的代码,太多的行,但我认为这不是的编码问题

我的问题的种子,由于某种原因,即使我有一个共享内存数组,但在函数temp中也找不到这个数组,给出错误名称错误:没有在第arr1行定义名称"arr1"。value[0]+=1

p是制造mores过程的原因。

我认为这可能是因为argparse读取了文件。有什么想法吗?

文档中的示例显示了在主线程中创建的arr1,然后将其作为参数传递给每个进程。您不希望在每个过程中都创建它。

所以你会想要这样的东西:

imports.....
function temp(listFile, a, c, l, arr1):
arr1[0] += 1
function main1(files = args.f, a = args.a, c = args.c, l = args.l, p = args.p):
arr1 = Array("i", args.p)
newP = Process(target=temp, args = (listFile, a, c, l, arr1))
newP.start()
newP.join() 
# arr1[0] should now be 1.

一位评论者指出,他们更喜欢在顶层创建共享内存。在这种情况下,您应该将arr1 = ...移动到if __name__ == '__main__'之下。重要的是共享内存由主线程创建一次。

相关内容

  • 没有找到相关文章

最新更新