Một cách phổ biến để chạy các chức năng 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
Tham gia Medium với liên kết giới thiệu của tôi - Konstantinos Patronas
Đọc mọi câu chuyện từ Konstantinos Patronas [và hàng nghìn nhà văn khác trên Medium]. Phí thành viên của bạn trực tiếp…
lovethepenguin. com
Nhưng nếu chúng ta chỉ muốn một chức năng rất đơn giản như chạy một số chức năng song song và không có gì khác thì sao?
Chúng ta có thể sử dụng hàm bao bọc sau đây cho việc này
def run_parallel[*functions]:
'''
Run functions in parallel
'''
from multiprocessing import Process
processes = []
for function in functions:
proc = Process[target=function]
proc.start[]
processes.append[proc]
for proc in processes:
proc.join[]
Hàm này cho phép chúng ta nhập tham số vào bất kỳ hàm nào có hoặc không có tham số và được thực thi song song
Thí dụ
#!/usr/bin/env python3def task_a[]:
print['this is task a']def task_b[]:
print['this is task b']def hello[msg]:
print['Hello: %s'%[msg]]def run_parallel[*functions]:
'''
Run functions in parallel
'''
from multiprocessing import Process
processes = []
for function in functions:
proc = Process[target=function]
proc.start[]
processes.append[proc]
for proc in processes:
proc.join[]if __name__ == '__main__':
run_parallel[task_a[],task_b[],hello[msg="konstantinos"]]
Thực hiện điều này sẽ mang lại kết quả sau
this is task a
this is task b
Hello: konstantinos
Điều này thật hay và đơn giản, nhưng làm thế nào chúng ta sẽ lấy lại kết quả từ các chức năng?
Để làm được điều này, chúng ta cần sử dụng một biến dùng chung như danh sách và nối kết quả của hàm vào danh sách
Các hàm lapply[] và sapply[] có thể được sử dụng để thực hiện nhiều chức năng trên một danh sách trong R. Chức năng này được sử dụng để tránh việc sử dụng các vòng lặp trong R. Sự khác biệt giữa cả hai hàm là hàm sapply[] thực hiện công việc tương tự như hàm lapply[] nhưng trả về một vectơ. Một hàm sẽ được xác định chứa nhiều hàm và được chuyển vào sapply[] và lapply[] làm đối số. Công thức này minh họa cách chúng ta có thể áp dụng nhiều hàm trên một danh sách trong R cùng một lúc
Bước 1 - Xác định danh sách
values