Hướng dẫn how do you run a parallel function in python? - làm thế nào để bạn chạy một chức năng song song trong python?
Tôi đã nghiên cứu trước và không thể tìm thấy câu trả lời cho câu hỏi của tôi. Tôi đang cố gắng chạy nhiều chức năng song song trong Python. Tôi có một cái gì đó như thế này:
Tôi muốn gọi func1 và func2 và để chúng chạy cùng một lúc. Các chức năng không tương tác với nhau hoặc trên cùng một đối tượng. Ngay bây giờ tôi phải đợi Func1 kết thúc trước khi Func2 bắt đầu. Làm thế nào để tôi làm một cái gì đó như dưới đây:
Tôi muốn có thể tạo cả hai thư mục khá gần với cùng một lúc vì mỗi phút tôi đang đếm số lượng tệp đang được tạo. Nếu thư mục không có ở đó, nó sẽ loại bỏ thời gian của tôi.
Martineau Huy hiệu vàng 116K2525 gold badges161 silver badges288 bronze badges Khi được hỏi ngày 26 tháng 8 năm 2011 lúc 15:46Aug 26, 2011 at 15:46
1 Bạn có thể sử dụng 8 hoặc 9.Do đặc thù của Cpython, 8 không có khả năng đạt được sự song song thực sự. Vì lý do này, 9 nói chung là đặt cược tốt hơn.Đây là một ví dụ hoàn chỉnh:
Các cơ chế bắt đầu/tham gia các quá trình con có thể dễ dàng được gói gọn thành một hàm dọc theo các dòng của 2 của bạn:
Đã trả lời ngày 26 tháng 8 năm 2011 lúc 15:48Aug 26, 2011 at 15:48
NPENPENPE 474K105 Huy hiệu vàng930 Huy hiệu bạc1002 Huy hiệu Đồng105 gold badges930 silver badges1002 bronze badges 15 Nếu các chức năng của bạn chủ yếu thực hiện công việc I/O (và ít công việc CPU hơn) và bạn có Python 3.2+, bạn có thể sử dụng một ThreadPoolExecutor:I/O work (and less CPU work) and you have Python 3.2+, you can use a ThreadPoolExecutor:
Nếu các chức năng của bạn chủ yếu thực hiện công việc CPU (và công việc I/O ít hơn) và bạn có Python 2.6+, bạn có thể sử dụng mô -đun đa xử lý:CPU work (and less I/O work) and you have Python 2.6+, you can use the multiprocessing module:
Đã trả lời ngày 14 tháng 5 năm 2019 lúc 21:24May 14, 2019 at 21:24
David Fosterdavid FosterDavid Foster 6.1883 huy hiệu vàng38 Huy hiệu bạc38 Huy hiệu đồng3 gold badges38 silver badges38 bronze badges 4 Điều này có thể được thực hiện một cách thanh lịch với Ray, một hệ thống cho phép bạn dễ dàng song song hóa và phân phối mã python của bạn. Để song song hóa ví dụ của bạn, bạn cần xác định các chức năng của mình với trình trang trí 3, sau đó gọi chúng bằng 4.
Nếu bạn chuyển cùng một đối số cho cả hai chức năng và đối số là lớn, một cách hiệu quả hơn để làm điều này là sử dụng 5. Điều này tránh đối số lớn được tuần tự hóa hai lần và để tạo hai bản sao bộ nhớ của nó:
Quan trọng - nếu 6 và 7 Kết quả trả về, bạn cần viết lại mã như sau:
Có một số lợi thế của việc sử dụng Ray so với mô -đun đa xử lý. Cụ thể, cùng một mã sẽ chạy trên một máy cũng như trên một cụm máy. Để biết thêm lợi thế của Ray, hãy xem bài viết liên quan này.same code will run on a single machine as well as on a cluster of machines. For more advantages of Ray see this related post.
Jimh 1.3722 Huy hiệu vàng13 Huy hiệu bạc27 Huy hiệu đồng2 gold badges13 silver badges27 bronze badges Đã trả lời ngày 3 tháng 2 năm 2019 lúc 19:58Feb 3, 2019 at 19:58
Ion stoicaion stoicaIon Stoica 7079 Huy hiệu bạc7 Huy hiệu đồng9 silver badges7 bronze badges 2 Có vẻ như bạn có một chức năng duy nhất mà bạn cần gọi trên hai tham số khác nhau. Điều này có thể được thực hiện một cách tao nhã bằng cách sử dụng kết hợp 8 và 9 với Python 3.2+
Bây giờ, nếu hoạt động của bạn bị ràng buộc IO, thì bạn có thể sử dụng 0 như vậy: 0Lưu ý cách 9 được sử dụng ở đây để 9 Chức năng của bạn vào danh sách các đối số.Bây giờ, nếu chức năng của bạn bị ràng buộc CPU, thì bạn có thể sử dụng 3 1Nếu bạn không chắc chắn, bạn chỉ có thể thử cả hai và xem cái nào cho bạn kết quả tốt hơn. Cuối cùng, nếu bạn đang muốn in ra kết quả của mình, bạn có thể chỉ cần làm điều này: 2Đã trả lời ngày 24 tháng 3 năm 2020 lúc 13:43Mar 24, 2020 at 13:43
BicubeBicubeBICube 4.1211 Huy hiệu vàng21 Huy hiệu bạc41 Huy hiệu đồng1 gold badge21 silver badges41 bronze badges Vào năm 2021, cách dễ nhất là sử dụng asyncio: 3References: [1] https://docs.python.org/3/l Library/asyncio-task.html Đã trả lời ngày 12 tháng 1 năm 2021 lúc 21:53Jan 12, 2021 at 21:53
9 Nếu bạn là người dùng Windows và sử dụng Python 3, thì bài đăng này sẽ giúp bạn thực hiện lập trình song song trong Python. Khi bạn chạy một chương trình nhóm của thư viện đa xử lý thông thường, bạn sẽ gặp lỗi về chức năng chính trong chương trình của mình. Điều này là do thực tế là Windows không có chức năng Fork (). Bài viết dưới đây là đưa ra một giải pháp cho vấn đề được đề cập. http://python.6.x6.nabble.com/Multiprocessing-Pool-woes-td5047050.html Vì tôi đang sử dụng Python 3, tôi đã thay đổi chương trình như thế này: 4Sau chức năng này, mã vấn đề trên cũng được thay đổi một chút như sau: 5Và tôi đã nhận được đầu ra như: 6Tôi nghĩ rằng bài đăng này có thể hữu ích cho một số người dùng Windows. Đã trả lời ngày 10 tháng 5 năm 2016 lúc 14:50May 10, 2016 at 14:50
Arun Soorajarun SoorajArun Sooraj 7079 Huy hiệu bạc20 Huy hiệu Đồng9 silver badges20 bronze badges Không có cách nào để đảm bảo rằng hai chức năng sẽ thực thi đồng bộ với nhau, đó dường như là điều bạn muốn làm. Điều tốt nhất bạn có thể làm là chia chức năng thành nhiều bước, sau đó chờ cả hai kết thúc tại các điểm đồng bộ hóa quan trọng bằng cách sử dụng 4 như đề cập đến câu trả lời của @Aix.Điều này tốt hơn 5 vì bạn không thể đảm bảo thời gian chính xác. Với sự chờ đợi rõ ràng, bạn đang nói rằng các chức năng phải được thực hiện bước đó trước khi chuyển sang bước tiếp theo, thay vì giả sử nó sẽ được thực hiện trong vòng 10ms không được đảm bảo dựa trên những gì khác đang diễn ra trên máy.Đã trả lời ngày 26 tháng 8 năm 2011 lúc 17:09Aug 26, 2011 at 17:09
Davy8Davy8Davy8 30.4K24 Huy hiệu vàng111 Huy hiệu bạc173 Huy hiệu đồng24 gold badges111 silver badges173 bronze badges (Về cách tôi có thể đồng thời chạy hai (hoặc nhiều) chức năng trong Python?) Với 6, các tác vụ đồng bộ/async có thể được chạy đồng thời bằng cách: 7Đã trả lời ngày 24 tháng 10 lúc 2:30Oct 24 at 2:30
Koyeungkoyeungkoyeung 1041 Huy hiệu bạc2 Huy hiệu đồng1 silver badge2 bronze badges Python có thể chạy hai chức năng song song không?Trên thực tế, một quá trình Python không thể chạy các luồng song song nhưng nó có thể chạy chúng đồng thời thông qua chuyển đổi ngữ cảnh trong các hoạt động ràng buộc I/O.Hạn chế này thực sự được thực thi bởi Gil.Khóa thông dịch viên toàn cầu Python (GIL) ngăn chặn các luồng trong cùng một quy trình được thực hiện cùng một lúc.a Python process cannot run threads in parallel but it can run them concurrently through context switching during I/O bound operations. This limitation is actually enforced by GIL. The Python Global Interpreter Lock (GIL) prevents threads within the same process to be executed at the same time.
Python có cho phép tính toán song song không?Có một số cách phổ biến để song song hóa mã Python.Bạn có thể khởi chạy một số trường hợp ứng dụng hoặc tập lệnh để thực hiện song song.Cách tiếp cận này là tuyệt vời khi bạn không cần trao đổi dữ liệu giữa các công việc song song.. You can launch several application instances or a script to perform jobs in parallel. This approach is great when you don't need to exchange data between parallel jobs. |