Tôi có một hàm Python trả về mảng numpy đa chiều làm đầu ra. Đó là một mô phỏng Monte Carlo với các số ngẫu nhiên và tôi muốn chạy chức năng này n lần với cùng một đầu vào, thu thập dữ liệu và làm trung bình. Có một cách đơn giản để sử dụng multiprocessing
để đạt được điều này?
Hỏi ngày 16 tháng 10 năm 2014 lúc 8:08Oct 16, 2014 at 8:08
Ví dụ: calc trung bình với hàm vuông đơn giản sử dụng 4 quy trình:
from multiprocessing import Pool
def f[x]:
return x*x
if __name__ == '__main__':
pool = Pool[processes=4]
n = 10000000
inputs = xrange[n]
# calc f output using 4 processes
out_list = pool.map[f, inputs]
# average
print sum[out_list] / float[n]
Đã trả lời ngày 16 tháng 10 năm 2014 lúc 8:37Oct 16, 2014 at 8:37
ndpundpundpu
21.6K4 Huy hiệu vàng52 Huy hiệu bạc68 Huy hiệu Đồng4 gold badges52 silver badges68 bronze badges
def
0import
4 def
6import
4def
8multiprocessing
4
multiprocessing 01import 4 multiprocessing 03time 6__12 | |
multiprocessing 15import 4 multiprocessing 17multiprocessing 18multiprocessing 19 | |
Ví dụ 3: | |
multiprocessing 34 multiprocessing 35import multiprocessing 37 | |
def multiprocessing 39multiprocessing 40multiprocessing 4 | |
def multiprocessing 58 | |
multiprocessing 60import 4 multiprocessing 62time 6__12 | |
def 0import 4 multiprocessing 78import 4multiprocessing 80multiprocessing 81 | |
Làm thế nào để bạn chạy một hàm song song trong Python? | |
Một cách phổ biến để chạy các hàm song song với Python là sử dụng mô -đun đa xử lý mạnh mẽ, nó có nhiều tùy chọn để cấu hình và rất nhiều thứ để điều chỉnh. | |
Python có thể chạy mã song song không? | |
Đa xử lý trong Python cho phép máy tính sử dụng nhiều lõi của CPU để chạy các tác vụ/quy trình song song. Đa xử lý cho phép máy tính sử dụng nhiều lõi của CPU để chạy các tác vụ/quy trình song song. | |
Làm thế nào để bạn gọi một chức năng bằng cách sử dụng đa xử lý trong Python? | |
Để chạy một chức năng trong một quy trình khác:. | |
Tạo một thể hiện của đa xử lý. Lớp học quá trình .. | |
Chỉ định tên của chức năng thông qua đối số của mục tiêu trên mạng .. | |
Gọi hàm start [] .. | |
Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều | |
Từ quá trình nhập bộ xử lý đa xử lý | |
all_processes = [] | |
Đối với func trong các nhiệm vụ: | |
P = Process [Target = Func] | |
all_processes.append [p] | |
P.start [] | |
Đối với p trong all_processes: | |
p.join [] | |
In "Tất cả các chủ đề kết thúc." | |
Xem thảo luận
Cải thiện bài viết
Lưu bài viết
Xem thảo luận
Cải thiện bài viết
Lưu bài viết
Đọc
Bàn luận
Approach:
- Trong bài viết này, chúng tôi sẽ học cách chạy cùng một chức năng song song với các tham số khác nhau. Chúng ta 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 xử lý song song.
- Số lượng nhiệm vụ được thực hiện bởi chương trình có thể được tăng lên bằng cách xử lý song song, làm giảm tổng thời gian xử lý. Những hỗ trợ này trong việc giải quyết các vấn đề quy mô lớn. Sử dụng mô -đun đa xử lý tiêu chuẩn, bằng cách tạo các quy trình con, chúng ta có thể song song hóa các tác vụ đơn giản một cách hiệu quả. Mô-đun này cung cấp một giao diện dễ sử dụng và bao gồm một tập hợp các tiện ích xử lý nhiệm vụ và đồng bộ hóa nhiệm vụ.
- Chúng tôi & nbsp; có thể xây dựng một quá trình chạy độc lập bằng cách phân lớp quy trình đa xử lý. Chúng ta có thể khởi tạo tài nguyên bằng cách mở rộng phương thức __init_ và chúng ta có thể viết mã cho quy trình con bằng cách thực hiện phương thức process.run []. Chúng tôi thấy cách xây dựng một quy trình trong mã bên dưới, in ID được chỉ định.
Chúng ta cần khởi tạo đối tượng quy trình của mình và gọi phương thức Process.start [] để sinh ra quy trình. Ở đây, Process.start [] sẽ tạo một quy trình mới và gọi một phương thức gọi là Process.run [].
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ụ [].
Python3
Hãy để hiểu điều này với một số ví dụ.
Ví dụ 1: & nbsp;
import
multiprocessing
import
time
class
Process[multiprocessing.Process]:
‘
multiprocessing
5multiprocessing
6multiprocessing
7multiprocessing
1
multiprocessing
5multiprocessing
2multiprocessing
3multiprocessing
4
multiprocessing
5multiprocessing
6multiprocessing
7multiprocessing
8import
2import
0multiprocessing
7multiprocessing
1import
2multiprocessing
3import
5
multiprocessing
5multiprocessing
1import
22213 import
4 multiprocessing
3
def
import
8multiprocessing
1multiprocessing
4
time
9
class
1
import
6 import
7import
4import
4 time
0time
1
time
9
time
3import
4 time
5time
6multiprocessing
4
Output:
time
3import
4 time
5multiprocessing
3multiprocessing
4
class
1
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.
Python3
Hãy để hiểu điều này với một số ví dụ.
Ví dụ 1: & nbsp;
import
multiprocessing
import
time
multiprocessing
5multiprocessing
1import
22213 import
4 multiprocessing
3
def
import
8multiprocessing
1multiprocessing
4
import
6 import
7import
4import
4 time
0time
1
time
3import
4 time
5time
6multiprocessing
4
time
3import
4 time
5multiprocessing
3multiprocessing
4
multiprocessing
6multiprocessing
7multiprocessing
23import
2import
0multiprocessing
26
multiprocessing
6multiprocessing
7multiprocessing
30import
2import
0multiprocessing
33
Output:
class
1
Python3
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:
multiprocessing
6multiprocessing
7multiprocessing
45import
2import
0multiprocessing
7multiprocessing
40multiprocessing
03time
6multiprocessing
52multiprocessing
40multiprocessing
03multiprocessing
3multiprocessing
56
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:
def
Process[multiprocessing.Process]:
7
Process[multiprocessing.Process]:
9
0
1
2
multiprocessing
17multiprocessing
18multiprocessing
85
multiprocessing
5multiprocessing
1import
22213 import
4 multiprocessing
3
multiprocessing
93
Output: