0

This question is a fork from: multiprocessing/threading: data appending & output return

I more or less have the same "run" function below, except that instead of appending a Plotly trace object, I am appending the x, y, and z vectors that I will process afterward. The contents of "run" will create random (for argument's sake) x, y, and z vectors (random lengths AND elements) that are to be appended to the input array.

def run(N, data_test):
    for running in range N:
        ...
        data_test.append([x_vec, y_vec, z_vec])
        ...

if __name__ == '__main__':
    jobs = []

    N = 3

    manager = Manager()       
    data_test = manager.list()

    for i in range(N):
        p = Process(target=run, args=(N, data_test)
        jobs.append(p)
        p.start()

The problem is that the same exact process is being run, even each iteration of the for-loop in "run". Please see output below:

For 17 x 17 assembly, 9 x 9 is needed. Your shape: (9, 9)
No neutrons generated for neutron 1
No neutrons generated for neutron 1
No neutrons generated for neutron 1
No neutrons generated for neutron 2
No neutrons generated for neutron 2
No neutrons generated for neutron 2
No neutrons generated for neutron 3
No neutrons generated for neutron 3
No neutrons generated for neutron 3
No neutrons generated for neutron 4
No neutrons generated for neutron 4
No neutrons generated for neutron 4
No neutrons generated for neutron 5
No neutrons generated for neutron 5
No neutrons generated for neutron 5
No neutrons generated for neutron 6
No neutrons generated for neutron 6
No neutrons generated for neutron 6
No neutrons generated for neutron 7
No neutrons generated for neutron 7
No neutrons generated for neutron 7
[[array([-4.22976272, -4.27405131]), array([-2.30184294, -2.69171934]), array([-10.40448512, -10.02764128])], [array([-1.93762109, -5.28861615]), array([ 15.84425545,  11.2366617 ]), array([ 48.19059553,  53.62837897])], [array([-15.81378301, -17.48005479]), array([ 4.09509284,  5.43022322]), array([-49.76008815, -46.75370686])], [array([-4.22976272, -4.27405131]), array([-2.30184294, -2.69171934]), array([-10.40448512, -10.02764128])], [array([-1.93762109, -5.28861615]), array([ 15.84425545,  11.2366617 ]), array([ 48.19059553,  53.62837897])], [array([-15.81378301, -17.48005479]), array([ 4.09509284,  5.43022322]), array([-49.76008815, -46.75370686])], [array([-4.22976272, -4.27405131]), array([-2.30184294, -2.69171934]), array([-10.40448512, -10.02764128])], [array([-1.93762109, -5.28861615]), array([ 15.84425545,  11.2366617 ]), array([ 48.19059553,  53.62837897])], [array([-15.81378301, -17.48005479]), array([ 4.09509284,  5.43022322]), array([-49.76008815, -46.75370686])], [array([-4.22976272, -4.27405131]), array([-2.30184294, -2.69171934]), array([-10.40448512, -10.02764128])], [array([-1.93762109, -5.28861615]), array([ 15.84425545,  11.2366617 ]), array([ 48.19059553,  53.62837897])], [array([-15.81378301, -17.48005479]), array([ 4.09509284,  5.43022322]), array([-49.76008815, -46.75370686])], [array([-4.22976272, -4.27405131]), array([-2.30184294, -2.69171934]), array([-10.40448512, -10.02764128])], [array([-1.93762109, -5.28861615]), array([ 15.84425545,  11.2366617 ]), array([ 48.19059553,  53.62837897])], [array([-15.81378301, -17.48005479]), array([ 4.09509284,  5.43022322]), array([-49.76008815, -46.75370686])], [array([-4.22976272, -4.27405131]), array([-2.30184294, -2.69171934]), array([-10.40448512, -10.02764128])], [array([-1.93762109, -5.28861615]), array([ 15.84425545,  11.2366617 ]), array([ 48.19059553,  53.62837897])], [array([-15.81378301, -17.48005479]), array([ 4.09509284,  5.43022322]), array([-49.76008815, -46.75370686])], [array([-4.22976272, -4.27405131]), array([-2.30184294, -2.69171934]), array([-10.40448512, -10.02764128])], [array([-1.93762109, -5.28861615]), array([ 15.84425545,  11.2366617 ]), array([ 48.19059553,  53.62837897])], [array([-15.81378301, -17.48005479]), array([ 4.09509284,  5.43022322]), array([-49.76008815, -46.75370686])]]

Process finished with exit code 0

What I would like to see, at the least, is the following:

No neutrons generated for neutron 1
No neutrons generated for neutron 2
No neutrons generated for neutron 3
No neutrons generated for neutron 1
No neutrons generated for neutron 2
No neutrons generated for neutron 3
No neutrons generated for neutron 1
No neutrons generated for neutron 2
No neutrons generated for neutron 3
No neutrons generated for neutron 1
No neutrons generated for neutron 2
No neutrons generated for neutron 3
No neutrons generated for neutron 1
No neutrons generated for neutron 2
No neutrons generated for neutron 3
No neutrons generated for neutron 1
No neutrons generated for neutron 2
No neutrons generated for neutron 3
No neutrons generated for neutron 1
No neutrons generated for neutron 2
No neutrons generated for neutron 3

Ultimately, it would be nice to see:

No neutrons generated for neutron 1
No neutrons generated for neutron 2
No neutrons generated for neutron 3
No neutrons generated for neutron 4
No neutrons generated for neutron 5
No neutrons generated for neutron 6
No neutrons generated for neutron 7
No neutrons generated for neutron 8
No neutrons generated for neutron 9
No neutrons generated for neutron 10
No neutrons generated for neutron 11
No neutrons generated for neutron 12
No neutrons generated for neutron 13
No neutrons generated for neutron 14
No neutrons generated for neutron 15
No neutrons generated for neutron 16
No neutrons generated for neutron 17
No neutrons generated for neutron 18
No neutrons generated for neutron 19
No neutrons generated for neutron 20
No neutrons generated for neutron 21

And if you notice the printed arrays in block 2, they are repeating when they should not be i.e. no array should repeat itself and the arrays for each neutron should be unique.

Sterling Butters
  • 1,024
  • 3
  • 20
  • 41
  • Your code is doing what you pass to `def run(...`, nothing wrong. `N=3` so you get **3** loops. Edit your Question and describe what output you expect. Beside this, your **output** does *not** reflect your code, please edit accordingly. – stovfl May 28 '17 at 13:50
  • Ahh yes, I should've done that originally, sorry. Is the question more clear now? – Sterling Butters May 28 '17 at 15:45
  • Not at all, your output is still different from your code. Where did you get this output range `1..21`? Update your code accordingly. – stovfl May 29 '17 at 10:25
  • Ohhh I see what you mean, the extent of my complete code surpasses the character limit allowed by stack overflow. Perhaps I should attach a file somehow? – Sterling Butters May 29 '17 at 13:13

0 Answers0