Tôi là một newbie đa,Python, đa luồng quá chậm, đa tiến
tôi biết điều gì đó về luồng nhưng tôi cần phải tăng tốc độ tính toán này, hy vọng với đa:
Ví dụ Mô tả : gửi chuỗi tới một chuỗi, thay đổi chuỗi + kiểm tra điểm chuẩn, gửi kết quả trả về để in.
from threading import Thread class Alter(Thread): def __init__(self, word): Thread.__init__(self) self.word = word self.word2 = '' def run(self): # Alter string + test processing speed for i in range(80000): self.word2 = self.word2 + self.word # Send a string to be altered thread1 = Alter('foo') thread2 = Alter('bar') thread1.start() thread2.start() #wait for both to finish while thread1.is_alive() == True: pass while thread2.is_alive() == True: pass print(thread1.word2) print(thread2.word2)
này hiện mất khoảng 6 giây và tôi cần nó để đi nhanh hơn.
Tôi đã xem xét xử lý đa và không thể tìm thấy thứ gì đó tương đương với mã trên. Tôi nghĩ rằng những gì tôi đang sau là tổng hợp nhưng các ví dụ tôi đã tìm thấy đã khó hiểu. Tôi muốn tận dụng lợi thế của tất cả các lõi (8 lõi) multiprocessing.cpu_count()
nhưng tôi thực sự chỉ có mẩu tin lưu trữ thông tin hữu ích về đa xử lý và không đủ để sao chép mã ở trên. Nếu bất cứ ai có thể chỉ cho tôi đi đúng hướng hoặc tốt hơn, hãy cung cấp một ví dụ sẽ được đánh giá cao. Python 3 vui lòng
đừng bận chờ đợi để hoàn thành chuỗi. sử dụng Thread.join()! – soulcheck
tại sao không? Tôi đã làm điều này trong hầu hết các mã của tôi và nếu bạn có thể cung cấp một lý do tốt, tôi sẽ thay đổi tất cả :) – Rhys
cũng ít nhất là tốt như bận rộn chờ đợi và có thể làm cho nó thụ động chờ cho đến khi thread được chấm dứt mà không ăn cpu (mặc dù tôi không thể tìm thấy nó trong các tài liệu i'd wager cpython không bận rộn-chờ đợi trong đó là Thread.join()). – soulcheck