2012-08-03 20 views
5

Sự hiểu biết của tôi là khi tôi đã gọi gevent.monkey.patch_all(), mô đun luồng chuẩn được sửa đổi để sử dụng greenlets thay vì các chuỗi python. Vì vậy, nếu tôi viết ứng dụng của tôi về các chủ đề python, ổ khóa, semaphores, vv, và sau đó gọi patch_all, tôi nhận được lợi ích đầy đủ của gevent, hoặc tôi mất một cái gì đó so với sử dụng tương đương gevent rõ ràng?Nhược điểm của việc sử dụng luồng vá vá so với greenlet gevent bản địa?

Động lực đằng sau câu hỏi này là tôi đang viết một mô-đun sử dụng một số chủ đề/greenlets và tôi quyết định xem có hữu ích khi chuyển đổi rõ ràng giữa sử dụng gevent và sử dụng luồng hay không. + patch_all mà không mất bất cứ thứ gì.

Để đặt nó trong mã, là thế này ...

def myfunction(): 
    print 'ohai' 

Greenlet.spawn(myfunction) 

... bất kỳ khác nhau để điều này?

import gevent.monkey 
gevent.monkey.patch_all() 
def mythread(threading.Thread): 
    def run(self): 
    print 'ohai' 

mythread().start() 

Trả lời

2

Ít nhất bạn sẽ mất một số phương pháp greenlet cụ thể: liên kết, giết, tham gia, vv Ngoài ra, bạn không thể sử dụng đề với, ví dụ, mô-đun gevent.pool, mà có thể rất hữu ích. Và có rất ít chi phí để tạo đối tượng Thread.