Python gRPC GIL

def __init__[self, port=50055, model_status=0, model_output=""]. bản thân. cổng = cổng tự. model_status = model_status tự. model_output = nhật ký model_output. info["Đang khởi tạo máy chủ GRPC", port=port] self. thread_pool = tương lai. ThreadPoolExecutor[max_workers=10] tự. máy chủ = grpc. máy chủ [tự. thread_pool] tự. django_initialized = Bản thân sai. django_apps = [] server_key = open[SERVER_KEY, "r"]. read[] server_cert = open[SERVER_CERT, "r"]. read[] server_ca = open[SERVER_CA, "r"]. đọc [] tự. thông tin đăng nhập = grpc. ssl_server_credentials[ [[server_key, server_cert]], server_ca, False ] tự. bị trì hoãn_shutdown_timer = Không tự. exit_event = phân luồng. Sự kiện [] tự. dịch vụ = []
# Bản quyền 2018 tác giả gRPC. ## Được cấp phép theo Giấy phép Apache, Phiên bản 2. 0 ["Giấy phép"];# bạn không được sử dụng tệp này trừ khi tuân thủ Giấy phép. # Bạn có thể lấy một bản sao của Giấy phép tại## http. //www. apache. org/giấy phép/GIẤY ​​PHÉP-2. 0## Trừ khi luật hiện hành yêu cầu hoặc được đồng ý bằng văn bản, phần mềm# được phân phối theo Giấy phép được phân phối trên CƠ SỞ "NGUYÊN TRẠNG",# KHÔNG CÓ BẢO ĐẢM HAY ĐIỀU KIỆN DƯỚI BẤT KỲ HÌNH THỨC NÀO, rõ ràng hay ngụ ý. # Xem Giấy phép để biết các quyền quản lý ngôn ngữ cụ thể và # giới hạn theo Giấy phép. _AWAIT_THREADS_TIMEOUT_SECONDS = 5_TRUE_VALUES = ['yes', 'Yes', 'YES', 'true', 'True', 'TRUE', '1']# Cờ này cho phép hỗ trợ thử nghiệm trong gRPC Python cho các ứng dụng# sẽ fork[] . Khi được bật, gRPC Python sẽ cố gắng # tạm dừng tất cả các chuỗi được tạo nội bộ của nó trước khi cuộc gọi tòa nhà fork tiến hành. ## Để điều này thành công, ứng dụng không được có nhiều luồng# lệnh gọi riêng của nó vào gRPC khi fork được gọi. Bất kỳ lệnh gọi lại nào từ gRPC# luồng do Python sinh ra vào mã người dùng [e. g. , lệnh gọi lại cho RPC không đồng bộ]# không được chặn và phải thực thi nhanh chóng. ## Cờ này không được hỗ trợ trên Windows. # Cờ này cũng không được hỗ trợ cho trình quản lý IO không phải bản địa. _GRPC_ENABLE_FORK_SUPPORT = [ hệ điều hành. môi trường. nhận ['GRPC_ENABLE_FORK_SUPPORT', '0']. Lower[] trong _TRUE_VALUES]_fork_handler_failed = Falsecdef void __prefork[] nogil. với gil. _fork_handler_failed toàn cầu _fork_handler_failed = Sai với _fork_state. fork_in_progress_condition. _fork_state. fork_in_progress = Đúng nếu không _fork_state. active_thread_count. await_zero_threads[ _AWAIT_THREADS_TIMEOUT_SECONDS]. _TIỀU PHU. lỗi ['Không thể tắt chuỗi gRPC Python trước ngã ba. ' 'Hành vi sau ngã ba sẽ không được xác định. '] _fork_handler_failed = Truecdef void __postfork_parent[] nogil. với gil. với _fork_state. fork_in_progress_condition. _fork_state. fork_in_progress = Sai _fork_state. fork_in_progress_condition. notify_all[] cdef void __postfork_child[] nogil. với gil. cố gắng. nếu _fork_handler_failed. return # Chủ đề có thể đang giữ fork_in_progress_condition bên trong # block_if_fork_in_progress[] khi fork xảy ra. Đặt lại khóa tại đây. _fork_state. fork_in_progress_condition = phân luồng. Điều kiện[] # Một chuỗi trong return_from_user_request_generator[] có thể giữ khóa này # khi ngã ba xảy ra. _fork_state. active_thread_count = _ActiveThreadCount[] cho state_to_reset trong _fork_state. postfork_states_to_reset. trạng thái_to_reset. reset_postfork_child[] _fork_state. postfork_states_to_reset = [] _fork_state. fork_epoch += 1 cho kênh trong _fork_state. kênh truyền hình. kênh truyền hình. _close_on_fork[] với _fork_state. fork_in_progress_condition. _fork_state. fork_in_progress = Sai ngoại trừ. _TIỀU PHU. lỗi ['Thoát phần tử con do tăng ngoại lệ'] _LOGGER. lỗi [hệ thống. exc_info[][0]] hệ điều hành. _exit[os. EX_USAGE] nếu grpc_is_initialized[] > 0. với gil. _TIỀU PHU. lỗi ['Không thể tắt gRPC Core sau fork[]'] hệ điều hành. _exit[os. EX_USAGE]def fork_handlers_and_grpc_init[]. grpc_init[] nếu _GRPC_ENABLE_FORK_SUPPORT. với _fork_state. fork_handler_registered_lock. nếu không _fork_state. fork_handler_registered. pthread_atfork[&__prefork, &__postfork_parent, &__postfork_child] _fork_state. fork_handler_registered = Trueclass ForkManagedThread[đối tượng]. def __init__[bản thân, mục tiêu, args=[]]. nếu _GRPC_ENABLE_FORK_SUPPORT. def quản lý_mục tiêu [* args]. cố gắng. target[*args] cuối cùng. _fork_state. active_thread_count. tự giảm []. _thread = luồng. Chủ đề [đích=_run_with_context[managed_target], args=args] khác. bản thân. _thread = luồng. Chủ đề [mục tiêu = _run_with_context [mục tiêu], args = args] def setDaemon [self, daemonic]. bản thân. _chủ đề. daemon = daemon def start[self]. nếu _GRPC_ENABLE_FORK_SUPPORT. _fork_state. active_thread_count. tăng [] tự. _chủ đề. bắt đầu [] chắc chắn tham gia [tự]. bản thân. _chủ đề. tham gia[] def block_if_fork_in_progress[postfork_state_to_reset=None]. nếu _GRPC_ENABLE_FORK_SUPPORT. với _fork_state. fork_in_progress_condition. nếu không _fork_state. fork_in_progress. trả lại nếu postfork_state_to_reset không phải là Không có. _fork_state. postfork_states_to_reset. nối thêm [postfork_state_to_reset] _fork_state. active_thread_count. giảm[] _fork_state. fork_in_progress_condition. đợi [] _fork_state. active_thread_count. gia tăng[] def enter_user_request_generator[]. nếu _GRPC_ENABLE_FORK_SUPPORT. _fork_state. active_thread_count. giảm[] def return_from_user_request_generator[]. nếu _GRPC_ENABLE_FORK_SUPPORT. _fork_state. active_thread_count. gia tăng[] block_if_fork_in_progress[]def get_fork_epoch[]. trả lại _fork_state. fork_epochdef is_fork_support_enabled[]. trả về _GRPC_ENABLE_FORK_SUPPORTdef fork_register_channel[kênh]. nếu _GRPC_ENABLE_FORK_SUPPORT. _fork_state. kênh truyền hình. thêm[kênh]def fork_unregister_channel[kênh]. nếu _GRPC_ENABLE_FORK_SUPPORT. _fork_state. kênh truyền hình. loại bỏ [kênh] lớp _ActiveThreadCount [đối tượng]. def __init__[bản thân]. bản thân. _num_active_threads = 0 tự. _điều kiện = phân luồng. Điều kiện [] tăng def [tự]. với bản thân. _điều kiện. bản thân. _num_active_threads += 1 giảm def[self]. với bản thân. _điều kiện. bản thân. _num_active_threads -= 1 nếu tự. _num_active_threads == 0. bản thân. _điều kiện. notify_all[] def await_zero_threads[self, timeout_secs]. end_time = thời gian. time[] + timeout_secs wait_time = timeout_secs với chính mình. _điều kiện. trong khi đúng. nếu tự. _num_active_threads > 0. bản thân. _điều kiện. đợi [wait_time] nếu tự. _num_active_threads == 0. trả về True # Số lượng chủ đề có thể đã tăng lên trước khi điều này lấy lại khóa # sau khi thông báo []. Chờ một lần nữa cho đến khi timeout_secs # trôi qua. wait_time = end_time - thời gian. time[] nếu wait_time

Chủ Đề