当前位置: 首页 > 面试题库 >

如何使进程能够在主程序的数组中编写?

甄德寿
2023-03-14
问题内容

我正在创建一个进程池,并且每个进程都需要写在主程序中存在的矩阵的不同部分中。不必担心会覆盖信息,因为每个进程将与矩阵的不同行一起工作。我如何使矩阵在过程中可写?

该程序是一位教授分配给我的矩阵乘法器,必须进行多次处理。它将为计算机具有的每个核心创建一个进程。主程序将矩阵的不同部分发送给流程,它们将对它们进行计算,然后以一种我可以识别出哪个响应对应于它所基于的行的方式将它们返回。


问题答案:

矩阵乘法是指分别计算所得矩阵的每个元素。对于Pool来说,这似乎是一份工作。由于这是家庭作业(还要遵循SO代码),因此我仅说明Pool本身的用法,而不是整个解决方案。

因此,您必须编写一个例程来计算所得矩阵的第(i,j)个元素:

def getProductElement(m1, m2, i, j):
    # some calculations
    return element

然后初始化池:

from multiprocessing import Pool, cpu_count
pool = Pool(processes=cpu_count())

然后,您需要提交工作。您也可以将它们组织成矩阵,但是为什么麻烦,让我们列出一个清单。

result = []
# here you need to iterate through the the columns of the first and the rows of
# the second matrix. How you do it, depends on the implementation (how you store
# the matrices). Also, make sure you check the dimensions are the same.
# The simplest case is if you have a list of columns:

N = len(m1)
M = len(m2[0])
for i in range(N):
    for j in range(M):
        results.append(pool.apply_async(getProductElement, (m1, m2, i, j)))

然后用结果填充结果矩阵:

m = []
count = 0
for i in range(N):
    column = []
    for j in range(M):
        column.append(results[count].get())
    m.append(column)

同样,代码的确切形状取决于您如何表示矩阵。



 类似资料:
  • 问题内容: 有人可以提供解释,说明当JVM仅是Linux上的单个进程时,Java多线程程序(例如Tomcat servlet容器)如何能够使用CPU的所有内核?有没有很好的深入文章详细介绍了该主题? 编辑#1 :我不是在寻找有关如何在Java中实现多线程程序的建议。我正在寻找有关JVM如何在Linux / Windows上内部管理以使用多个内核而仍是OS上的单个进程的解释。 编辑#2 :我设法找到

  • 我有一个在Oracle Weblogic Server 11g上运行的Web应用程序。它使用应用服务器中定义的数据源连接到Oracle数据库(也是11g),其类为 神谕jdbc。xa。客户OracleXADataSource > 如果由于某种原因,数据库不存在,然后返回,则应用程序运行正常(在尝试访问数据库时出现异常,但这很好,然后可以在数据库返回时再次获得一些新连接) 但是,如果数据库在webl

  • ActiveX(也称为ocx组件),Microsoft对象链接与嵌入定制控件,是目前极为通用的Windows组件格式,易语言从3.2版本开始,就支持了直接在程序中使用此类型的组件。那么,如果您有一个很好用的ActiveX组件,如何使其能够在易语言中使用呢? 步骤如下: 首先,您需要将其包装成可以在易语言中使用的支持库格式,请执行“工具 -> 类型库及OCX组件-〉支持库” 选中您欲在易语言中使用的

  • 配置tensorflow后,我尝试运行命令 但发生了一个错误,我尽了一切可能,但未能解决。 错误:跳过“//tensorflow/cc:tutorials\u example\u trainer”:加载包“tensorflow/cc”时出错:在读取扩展文件“cuda/build\u defs”时遇到错误。bzl':没有这样的包“@local_config_cuda//cuda”:回溯(最后一次调用

  • 它在cmd.exe控制台上对我有效: 但是我需要编译python 这不起作用: 、'- name '、' Analysis log Pre-Alpha 1 '、'- onefile '、'- windowed '、'- icon= '、' tk.ico '、' tk.py'])文件“C:\ tools \ python 2-x86 _ 32 \ lib \ subprocess . py”,第52

  • 本文向大家介绍编写Golang程序以使用冒泡排序对数组进行排序,包括了编写Golang程序以使用冒泡排序对数组进行排序的使用技巧和注意事项,需要的朋友参考一下 定义:冒泡排序是最简单的排序算法,通过以错误顺序重复交换相邻元素来工作。 例子 输入arr = [7、5、1、6、3] 第一次迭代=> swap(7,5)=> swap(7,1)=> swap(7,6)=> swap(7,3)=> [5,1