我有一个关于 python 中多线程的问题。基本上在我的软件中,我得到了一个运行成本很高的功能。因此,我把它放在子线程中运行。但是,在函数运行过程中,它会调用一个函数并更改对象的某些值,从而触发GUI 更改。因此,我需要将其放回主线程。
问题是我需要等待这个函数在主线程中完全完成,然后在子线程中继续执行该函数。
因此,我需要一种巧妙的方法将作业发送回主线程并等待它完成。有人可以给我任何建议吗?
非常感谢。我在下面添加了我的运行线程方法
此致,
import Queue
import logging
import sys
import time
import threading
DISABLE_THREADING = False
queue = Queue.Queue()
def run_in_sub_thread_named(name, function, *params):
if DISABLE_THREADING:
return function(*params)
th = _DEThread(function, *params)
task_info = TaskInfo(name)
th.task_info = task_info
running_tasks[th] = task_info
th.start()
return th
def run_in_main_thread(function, *params, **kwargs):
cur_thread = threading.currentThread()
cur_thread_name = cur_thread.getName()
in_main_thread = (cur_thread_name == 'MainThread')
if in_main_thread:
function(*params, **kwargs)
else:
queue.put((function, params, kwargs))
class _DEThread:
def __init__(self, function, *params):
self.thread = threading.Thread(target=self.execute) …Run Code Online (Sandbox Code Playgroud)