The code below is a summary (?) of the questions.
Although oversimplified in the code below, the resulting matrix M approached by each process is located in a different position (each process wants to write a value to a different M [row] [column].)
By copying the variable M from the process? The value of the matrix element does not change as the id(M) value is taken differently. I tried to declare it as a global variable, but it didn't work outㅠㅜ I reserved how to use queue because it was too slow.
Processes can take the memory address of the global variable as it is Or is there any other way to get the results...?
Thank you.
from multiprocessing import Process
import numpy
def main():
mother()
def mother():
PROCESS_NUM = 4
M = numpy.array(3) # Variable to write output
element = [30, 40, 50, 60]
for i in range(3):
PROCESS_LIST = []
for i in range(PROCESS_NUM):
p = Process(target = pF_mother, args = (
element[i], M,))
PROCESS_LIST.append(p)
PROCESS_LIST[i].start()
for i in range(PROCESS_NUM):
PROCESS_LIST[i].join()
return M
def pF_mother(elt, output):
output = elt
return output
if __name__ == "__main__":
main()
You must use Shared memory for multiple processes to communicate with each other.
I'll only give you an example of using Value, which is the simplest example.
'd' after Value means double precision float. If you want to use it as an integer, you can write "i".
In the example below, each of the two processes reads the value written in shared memory, increasing it by 1 and outputting 2.
from multiprocessing import Process, Value, Array
def f(n):
n.value = n.value + 1
num = Value('d', 0.0)
p1 = Process(target=f, args=(num,))
p2 = Process(target=f, args=(num,))
p1.start()
p2.start()
p1.join()
p2.join()
print(num.value)
For more information on how to use an array other than Value, see here.
574 Who developed the "avformat-59.dll" that comes with FFmpeg?
578 Understanding How to Configure Google API Key
613 GDB gets version error when attempting to debug with the Presense SDK (IDE)
916 When building Fast API+Uvicorn environment with PyInstaller, console=False results in an error
620 Uncaught (inpromise) Error on Electron: An object could not be cloned
© 2024 OneMinuteCode. All rights reserved.