Hướng dẫn python thread-safe variable - biến an toàn trong chuỗi python
Bạn có thể tạo một bộ đếm an toàn bằng cách sử dụng khóa mutex thông qua lớp Threading.lock.counter thread-safe by using a mutex lock via the threading.Lock class.counter thread-safe by using a mutex lock via the threading.Lock class. Show Trong hướng dẫn này, bạn sẽ khám phá cách phát triển một bộ đếm an toàn chủ đề. Bắt đầu nào.
Một chủ đề là một chủ đề thực thi trong một chương trình máy tính. Mỗi chương trình Python có ít nhất một luồng thực thi được gọi là luồng chính. Cả hai quy trình và luồng được tạo và quản lý bởi hệ điều hành cơ bản. Đôi khi chúng ta có thể cần tạo các luồng bổ sung trong chương trình của chúng tôi để thực thi mã đồng thời. Python cung cấp khả năng tạo và quản lý các luồng mới thông qua mô -đun luồng và lớp luồng.threading.Thread class.threading.Thread class. Bạn có thể tìm hiểu thêm về các chủ đề Python trong hướng dẫn:
Trong lập trình đồng thời, chúng ta thường cần cập nhật một bộ đếm từ nhiều luồng. Điều này có thể là vì nhiều lý do, chẳng hạn như:
Cập nhật một biến số từ nhiều luồng không an toàn và có thể dẫn đến một điều kiện cuộc đua. Bạn có thể tìm hiểu thêm về điều kiện cuộc đua ở đây:
Làm thế nào chúng ta có thể tạo một bộ đếm an toàn chủ đề? Cách tạo bộ đếm an toàn chủ đềVí dụ về bộ đếm chủ đề không an toànthreading.Lock class. Ví dụ về bộ đếm an toàn chủ đề Đọc thêm
Mỗi chương trình Python có ít nhất một luồng thực thi được gọi là luồng chính. Cả hai quy trình và luồng được tạo và quản lý bởi hệ điều hành cơ bản. Đôi khi chúng ta có thể cần tạo các luồng bổ sung trong chương trình của chúng tôi để thực thi mã đồng thời.acquire() function before accessing the counter variable and calling release() after work with the counter variable has completed. Đọc thêm
Python cung cấp khả năng tạo và quản lý các luồng mới thông qua mô -đun luồng và lớp luồng.threading.Thread class.threading.Lock is to use the context manager which will release the lock automatically once the block is exited. Đọc thêm
Đôi khi chúng ta có thể cần tạo các luồng bổ sung trong chương trình của chúng tôi để thực thi mã đồng thời.
Bạn có thể tìm hiểu thêm về các chủ đề Python trong hướng dẫn: Chủ đề trong Python: Hướng dẫn hoàn chỉnh Ví dụ về bộ đếm chủ đề không an toànVí dụ về bộ đếm an toàn chủ đề Đọc thêm TakeawaysThreadUnsafeCounter.ThreadUnsafeCounter.
Đôi khi chúng ta có thể cần tạo các luồng bổ sung trong chương trình của chúng tôi để thực thi mã đồng thời.
Trong lập trình đồng thời, chúng ta thường cần cập nhật một bộ đếm từ nhiều luồng.increment().
Đối chiếu các giá trị từ các nguồn dữ liệu khác nhau.
Bạn có thể tìm hiểu thêm về điều kiện cuộc đua ở đây:ThreadUnsafeCounter class is listed below.ThreadUnsafeCounter class is listed below.
Đếm các nhiệm vụ hoàn thành bởi nhiều chủ đề công nhân. Đối chiếu các giá trị từ các nguồn dữ liệu khác nhau.
Chủ đề trong Python: Hướng dẫn hoàn chỉnhdef increment(self):ThreadUnsafeCounter to be shared among all threads.
Đếm các nhiệm vụ hoàn thành bởi nhiều chủ đề công nhân.task() function and pass the counter instance as an argument.
Đếm các nhiệm vụ hoàn thành bởi nhiều chủ đề công nhân.
Đối chiếu các giá trị từ các nguồn dữ liệu khác nhau.
Đếm các nhiệm vụ hoàn thành bởi nhiều chủ đề công nhân. Đối chiếu các giá trị từ các nguồn dữ liệu khác nhau.
# Báo cáo giá trị của bộ đếmThreadUnsafeCounter class.ThreadUnsafeCounter class. Với mười luồng, mỗi luồng tăng 100.000 lần, chúng tôi hy vọng giá trị cuối cùng của bộ đếm là 1.000.000. Tying này lại với nhau, ví dụ hoàn chỉnh được liệt kê dưới đây. # SuperfastPython.com # Ví dụ về một bộ đếm không an toàn (có điều kiện chủng tộc) từ luồng nhập luồng_counter variable is updated in a thread unsafe manner._counter variable is updated in a thread unsafe manner. # Chủ đề lớp quầy không an toàn & nbsp; & nbsp; & nbsp; & nbsp;# Constructor
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;# khởi tạo bộ đếm & nbsp; & nbsp; & nbsp; & nbsp;# tăng bộ đếm & nbsp; & nbsp; & nbsp; & nbsp; def tăng (self): & nbsp; & nbsp; & nbsp; & nbsp;# Nhận giá trị bộ đếm & nbsp; & nbsp; & nbsp; & nbsp; def value (self): # Nhiệm vụ được thực hiện bởi các chủ đềNhiệm vụ def (Counter):ThreadUnsafeCounter class that we developed in the previous section can be updated to be thread-safe.ThreadUnsafeCounter class that we developed in the previous section can be updated to be thread-safe. Chạy ví dụ đầu tiên tạo ra một thể hiện của lớp ThreadunSafeC gặp gỡ của chúng tôi.threading.Lock instance to the class to protect the counter variable.threading.Lock instance to the class to protect the counter variable. Tiếp theo, chúng tôi tạo và định cấu hình mười chủ đề mà tất cả đều cố gắng tăng bộ đếm 100.000 lần. Các luồng sau đó được bắt đầu và các khối chủ đề chính cho đến khi tất cả các luồng mới kết thúc.
Có một điều kiện cuộc đua.increment() method, we can first acquire the lock then change the value using the context manager.increment() method, we can first acquire the lock then change the value using the context manager.
Khóa học luồng python miễn phívalue() method, we can again protect the counter variable by first acquiring the lock.value() method, we can again protect the counter variable by first acquiring the lock.
Khóa học luồng python miễn phívalue() method, we can again protect the counter variable by first acquiring the lock.ThreadSafeCounter. The updated thread-safe version of the class is listed below.
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; giá trị def (tự):
Buộc nào lại với nhau, ví dụ hoàn chỉnh được liệt kê dưới đây. # SuperfastPython.comthreading Chủ đề nhập # Ví dụ về bộ đun từ luồng NHập luồng & nbsp; & nbsp; & nbsp; & nbsp;# Constructor# Constructor & nbsp; & nbsp; & nbsp; & nbsp; def __init __ (self): def __init __ (tự):& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;
& nbsp; & nbsp; & nbsp; & nbsp; giá trị def (tự): giá trị def (tự):& nbsp; & nbsp; & nbsp; & nbsp; giá trị def (self): nhiệm vụ (bộ đếm): & nbsp; & nbsp; & nbsp; & nbsp; def t teng (tự): & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; |