Tôi đang cố gắng sử dụng các đề tài trong một dự án Python mà tôi đang làm việc, nhưng các luồng có vẻ không hoạt động như chúng được cho là trong mã của tôi. Dường như tất cả các chuỗi chạy tuần tự (tức là thread2 bắt đầu sau khi chuỗi 1 kết thúc, chúng không bắt đầu cùng một lúc). Tôi đã viết một kịch bản đơn giản để kiểm tra điều này, và điều đó cũng chạy các chuỗi liên tục.Threading Python xuất hiện để chạy các chuỗi liên tiếp
import threading
def something():
for i in xrange(10):
print "Hello"
def my_thing():
for i in xrange(10):
print "world"
threading.Thread(target=something).start()
threading.Thread(target=my_thing).start()
Dưới đây là kết quả tôi nhận được từ chạy nó:
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
world
world
world
world
world
world
world
world
world
world
Các hành vi tương tự được quan sát với số lượng lớn hơn rất nhiều lần lặp của vòng lặp.
Tôi đã thử tìm kiếm trên web và các câu trả lời cũ hơn SO, nhưng tôi không thể tìm thấy bất kỳ điều gì hữu ích. Ai đó có thể vui lòng chỉ ra điều gì sai với mã này?
Hành vi tương tự với 10000 lần lặp – MAK
Trên dự án thực tế mà tôi đang làm việc, một trong các chuỗi là một vòng lặp vô hạn lắng nghe tin nhắn và gọi hàm gọi lại họ đến. Nó chỉ chặn tất cả các chủ đề khác. Thật không may, mã vòng lặp thực tế không thể sửa đổi được (tôi chỉ gọi phương thức run() của một lớp trong chuỗi). – MAK
Khi tôi chạy tập lệnh như sau: './pythr.py | uniq -c' Tôi nhận được: 8969 Xin chào | 1 Xin chào thế giới | 6626 thế giới | 1 | Thế giới 3373 | 1030 Xin chào. Vì vậy, nó thay đổi điều khiển - chỉ cần không thường xuyên đó ... – viraptor