Đư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]]
import
4multiprocessing.Pool
5 import
6import
7import
5
import
4multiprocessing.Pool
5 import
6import
4import
5
import
4multiprocessing.Pool
5 import
6import
7import
5
import
4multiprocessing.Pool
5 import
6import
4import
5
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:
0from 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]]
class
8- 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]]
1from 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]]
2from 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]]
3from 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]]
4from 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]]
5from 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]]
6from 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]]
7from 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]]
8from 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.Pool
0from 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]]
6from 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.Pool
3from 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.Pool
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]]
4
____10 multiprocessing.Pool
9
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]]
2from 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]]
6import
3import
4import
5from 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]]
6import
7import
8import
9multiprocessing.Pool
3multiprocessing
1import
8from 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.Pool
3from 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]]
4multiprocessing
6multiprocessing
7 multiprocessing
8multiprocessing.Pool
5multiprocessing.Pool
5 import
1import
2
import
4multiprocessing.Pool
5 import
6import
7import
5
time
0
time
2
import
4multiprocessing.Pool
5 import
6import
4import
5
time
0
time
2
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 class
8
Process[multiprocessing.Process]:
0 Process[multiprocessing.Process]:
1Process[multiprocessing.Process]:
2 Process[multiprocessing.Process]:
3
multiprocessing
7 multiprocessing
8multiprocessing.Pool
5multiprocessing.Pool
5 import
1import
2
1multiprocessing.Pool
5
3
1multiprocessing.Pool
5
7multiprocessing.Pool
5
9import
5
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.Pool
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]]
18from 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]]
19from 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
import
7import
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]]
24multiprocessing.Pool
3multiprocessing
1from 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
import
7import
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]]
31multiprocessing.Pool
3multiprocessing
1from 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]]
34Output:
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]]
38from 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]]
40from 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]]
41from 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
import
7import
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]]
46multiprocessing.Pool
3multiprocessing
1import
8from 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]]
41from 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]]
04import
7from 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]]
53from 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]]
41from 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]]
04import
4from 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]]
57from 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.Pool
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]]
63import
7from 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]]
3from 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.Pool
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]]
79multiprocessing.Pool
5from 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]]
81from 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]]
18from 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]]
19from 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]]
86multiprocessing
7 multiprocessing
8multiprocessing.Pool
5multiprocessing.Pool
5 import
1import
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]]
94Output: