Hướng dẫn run same python script simultaneously with different arguments - chạy đồng thời cùng một tập lệnh python với các đối số khác nhau

Đưa tập lệnh của bạn vào một phương thức chính, như vậy:

def main[args]:
    a, b = args
    # do something


if __name__ == '__main__':
    args = parse_arguments[]
    main[args]

Sau đó, bạn có thể sử dụng tập lệnh thứ hai cùng với multiprocessing.Pool, để chạy phương thức chính với các đối số khác nhau.

from myscript import main
from multiprocessing import Pool



a = [1, 2, 3, 4, 5]
b = [6, 7, 8, 9, 10]

if __name__ == '__main__':
    with Pool[4] as pool: # four parallel jobs
        results = pool.map[main, zip[a, b]]

    import4multiprocessing.Pool5 import6import7import5

    import4multiprocessing.Pool5 import6import4import5

  • Chúng ta cũng có thể chạy cùng một hàm song song với các tham số khác nhau bằng cách sử dụng lớp nhóm. Để ánh xạ song song, trước tiên chúng ta phải khởi tạo đối tượng đa xử lý.pool []. Đối số đầu tiên là số lượng công nhân; Nếu không được đưa ra, con số đó sẽ bằng số lượng phần tử trong hệ thống.
  • Ví dụ 2:
  •     import4multiprocessing.Pool5 import6import7import5

        import4multiprocessing.Pool5 import6import4import5

    Chúng ta cũng có thể chạy cùng một hàm song song với các tham số khác nhau bằng cách sử dụng lớp nhóm. Để ánh xạ song song, trước tiên chúng ta phải khởi tạo đối tượng đa xử lý.pool []. Đối số đầu tiên là số lượng công nhân; Nếu không được đưa ra, con số đó sẽ bằng số lượng phần tử trong hệ thống.

    Ví dụ 2:

    Approach:

    • Hãy xem bằng một ví dụ. Trong ví dụ này, chúng ta sẽ thấy cách truyền một hàm tính toán bình phương của một số. Sử dụng pool.map [], chúng tôi có thể ánh xạ hàm vào danh sách và chuyển chức năng và danh sách các đầu vào làm đối số, như sau:
    • from myscript import main
      from multiprocessing import Pool
      
      
      
      a = [1, 2, 3, 4, 5]
      b = [6, 7, 8, 9, 10]
      
      if __name__ == '__main__':
          with Pool[4] as pool: # four parallel jobs
              results = pool.map[main, zip[a, b]]
      
      0 class8
    • Mã sau P.start [] được thực thi ngay trước khi Pcess P hoàn thành nhiệm vụ. Bạn có thể sử dụng Process.Join để chờ hoàn thành nhiệm vụ [].

    Hãy để hiểu điều này với một số ví dụ.

    Ví dụ 1: & nbsp;

    Python3

    import multiprocessing

    import time

    class Process[multiprocessing.Process]:

        ____10

    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    1
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    2
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    3
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    4
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    5

    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    6
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    7
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    8
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    2multiprocessing.Pool0

    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    6
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    2multiprocessing.Pool3
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    4 multiprocessing.Pool5
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    4

        ____10 multiprocessing.Pool9

    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    2

    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    6import3import4import5

    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    6import7import8import9multiprocessing.Pool3multiprocessing1import8
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    2multiprocessing.Pool3
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    4multiprocessing6

    multiprocessing7 multiprocessing8multiprocessing.Pool5multiprocessing.Pool5 import1import2

        import4multiprocessing.Pool5 import6import7import5

        time0

        time2

        import4multiprocessing.Pool5 import6import4import5

        time0

        time2

    Output:

    Chúng ta cũng có thể chạy cùng một hàm song song với các tham số khác nhau bằng cách sử dụng lớp nhóm. Để ánh xạ song song, trước tiên chúng ta phải khởi tạo đối tượng đa xử lý.pool []. Đối số đầu tiên là số lượng công nhân; Nếu không được đưa ra, con số đó sẽ bằng số lượng phần tử trong hệ thống.

    Ví dụ 2:

    Hãy xem bằng một ví dụ. Trong ví dụ này, chúng ta sẽ thấy cách truyền một hàm tính toán bình phương của một số. Sử dụng pool.map [], chúng tôi có thể ánh xạ hàm vào danh sách và chuyển chức năng và danh sách các đầu vào làm đối số, như sau:

    Python3

    import multiprocessing

    import time

    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    0 class8

        Process[multiprocessing.Process]:0 Process[multiprocessing.Process]:1Process[multiprocessing.Process]:2 Process[multiprocessing.Process]:3

    multiprocessing7 multiprocessing8multiprocessing.Pool5multiprocessing.Pool5 import1import2

            1multiprocessing.Pool5     3

            1multiprocessing.Pool5     7multiprocessing.Pool5    9import5

    Các

        

    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    16multiprocessing.Pool5
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    18
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    19
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    20

        import7import8

    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    24multiprocessing.Pool3multiprocessing1
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    27

        import7import8

    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    31multiprocessing.Pool3multiprocessing1
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    34

    Output:

    Ví dụ 3:

    Python3

    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    35
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    36import
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    38

    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    0
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    40
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    41
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    5

        import7import8

    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    46multiprocessing.Pool3multiprocessing1import8
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    41
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    04import7
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    53
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    41
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    04import4
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    57

    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    0
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    59

        

    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    61multiprocessing.Pool5
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    63import7
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    3
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    66__

            1multiprocessing.Pool5

    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    79multiprocessing.Pool5
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    81
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    82

        

    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    18
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    19
    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    86

    multiprocessing7 multiprocessing8multiprocessing.Pool5multiprocessing.Pool5 import1import2

        

    from myscript import main
    from multiprocessing import Pool
    
    
    
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    if __name__ == '__main__':
        with Pool[4] as pool: # four parallel jobs
            results = pool.map[main, zip[a, b]]
    
    94

    Output:


    Bài Viết Liên Quan

    Chủ Đề