# Copyright (c) 2014 CEF Python, see the Authors file.# All rights reserved. Licensed under BSD 3-clause license.# Project website: https://github.com/cztomczak/cefpythoninclude "cefpython.pyx"g_taskMaxId = 0g_tasks = {}def PostTask(int thread, object func, *args):global g_tasks, g_taskMaxId# Validate threadId.if thread not in g_browserProcessThreads:raise Exception("PostTask failed: requires a browser process thread")# Validate func.if not IsFunctionOrMethod(type(func)):raise Exception("PostTask failed: not a function nor method")# Params.cdef list params = list(args)# Keep func and params until PyTaskRunnable is called.g_taskMaxId += 1g_tasks[str(g_taskMaxId)] = {"func": func,"params": params}# Call C++ wrapper.cdef int cTaskId = int(g_taskMaxId)with nogil:PostTaskWrapper(thread, cTaskId)def PostDelayedTask(int thread, int delay_ms, object func, *args):global g_tasks, g_taskMaxId# Validate threadId.if thread not in g_browserProcessThreads:raise Exception("PostTask failed: requires a browser process thread")# Validate func.if not IsFunctionOrMethod(type(func)):raise Exception("PostTask failed: not a function nor method")# Params.cdef list params = list(args)# Keep func and params until PyTaskRunnable is called.g_taskMaxId += 1g_tasks[str(g_taskMaxId)] = {"func": func,"params": params}# Call C++ wrapper.cdef int cTaskId = int(g_taskMaxId)with nogil:PostDelayedTaskWrapper(thread, delay_ms, cTaskId)cdef public void PyTaskRunnable(int taskId) except * with gil:cdef object funccdef list paramscdef object tasktry:global g_tasks# Validate if task exist.if str(taskId) not in g_tasks:raise Exception("PyTaskRunnable failed: invalid taskId=%s" \% taskId)# Fetch task: func and params.task = g_tasks[str(taskId)]func = task["func"]params = task["params"]del g_tasks[str(taskId)]# Execute user func.Debug("PyTaskRunnable: taskId=%s, func=%s" % (taskId, func.__name__))func(*params)except:(exc_type, exc_value, exc_trace) = sys.exc_info()sys.excepthook(exc_type, exc_value, exc_trace)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。