2010-08-06 28 views
38

Tôi đang tìm thư viện hoặc khung công tác diễn viên dễ học cho Python 2.x. Tôi đã thử Candygram và Twisted nhưng tôi không thích chúng. Tôi muốn một cái gì đó sẽ được dễ dàng để mở rộng để suppero Greenlet (= stackless python).Thư viện/khung mô hình diễn viên nào cho python và Erlang?

  • Biểu đồ quá cũ.
  • Xoắn quá phức tạp.
  • Gevent: không rõ liệu nó có hỗ trợ mô hình Diễn viên hay không.

Bạn đề xuất điều gì?

+3

Tôi không biết gì về Candygram, nhưng tôi nghĩ Twisted được định hướng nhiều hơn xung quanh mạng hơn xung quanh đồng thời dựa trên Actor. –

+1

Erlang tốt nhất như diễn viên được thực hiện trong Erlang. Làm việc đồng thời theo định hướng trong Erlang và phần còn lại của công việc để python thông qua cổng. Tôi sẽ làm toàn bộ công việc trong Erlang nhưng nếu ai đó nghĩ rằng Python là tốt hơn cho bất kỳ nhiệm vụ đó là hương vị của mình. –

+0

Tôi biết một chút Erlang nó đá, nhưng tôi muốn sử dụng Python. Tôi không cần phải làm điều tương tự tôi làm trong Erlang bằng Python, và cũng không giống như cách – daitangio

Trả lời

18

Để tạo diễn viên với gevent, hãy sử dụng lớp con Greenlet với trường hợp được nhúng gevent.queue.Queue được sử dụng làm hộp thư đến. Để đọc thư từ hộp thư đến, chỉ cần get() từ hàng đợi. Để gửi tin nhắn đến một diễn viên, hãy put nó vào hàng đợi của diễn viên đó.

Read about subclassing Greenlet here.

Nếu bạn cần trợ giúp viết lớp diễn viên, vui lòng ask the mailing list.

2

Điều này tutorial có một ví dụ đơn giản và hoạt động cho các diễn viên có gevent. Về cơ bản nó chính xác như Denis đã được mô tả.

3

tôi sẽ xem xét điều này: https://bitbucket.org/fzzzy/python-actors

Đó là khá nhiều một bản sao thẳng của mô hình diễn viên Erlang, với "lưu" thông điệp hàng đợi, liên kết và tất cả mọi thứ.

5

PARLEYPykka được liệt kê trên số Wikipedia Actor Model page này để bạn có thể muốn xem xét một trong số đó.

Pykka dường như được tích cực phát triển (1.0.1 phát hành vào tháng 12 năm 2012) trong khi PARLEY chưa có bản phát hành kể từ năm 2007 (và vẫn được liệt kê là bản beta). Pykka tuyên bố sẽ bị xóa bởi Akka chỉ trong tên không phải là một cổng python đơn giản.

+0

Điều làm tôi bối rối là ở Erlang, nó rất phổ biến cho các diễn viên tự tin nhắn. Ở Pykka, không rõ đối tượng được tham chiếu như thế nào. – fatuhoku

+1

Không chắc chắn tính năng mới này như thế nào, nhưng Pykka 1.2.0 hỗ trợ self.actor_ref. Điều này được đề cập một cách rõ ràng trong phần [Proxies] (http://www.pykka.org/en/latest/api/#proxies) của tài liệu như một cách để một diễn viên "lên lịch làm việc trong tương lai" với chính nó, vì vậy tôi Hãy tưởng tượng đó là hỗ trợ mạnh mẽ. – Jayson

+0

trông giống như pykka không còn tích cực phát triển –

13

Kiểm tra pulsar, nó là một khuôn khổ đồng thời cho python sử dụng mô hình diễn viên làm nguồn thực thi song song.

+0

Pulsar dường như được duy trì rất tốt, và cũng hỗ trợ chức năng 'asyncio' của Python3. – user1496984

6

Tôi biết câu hỏi này là một chút ngày nhưng đây là một nguồn tài nguyên diễn viên cho python bây giờ:

https://github.com/godaddy/Thespian

Tài liệu có thể được tìm thấy ở đây:

http://godaddy.github.io/Thespian/doc/

EDIT:

Tác giả chính của điều này thư viện đã từ bỏ GoDaddy và chia hai repo:

https://github.com/kquick/Thespian

tài liệu mới có thể được tìm thấy ở đây:

http://thespianpy.com/doc/

Các vấn đề liên quan