Python多线程应用

Odoo多线程应用参考

Python 多线程适合的使用场景为: I/O 密集型

多线程类似于同时执行多个不同程序,多线程运行有如下优点

  • 使用线程可以把占据长时间的程序中的任务放到后台去处理。
  • 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度
  • 程序的运行速度可能加快
  • 在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。

应用样例

from threading import Thread

class SyncTask(object):
    #同步任务
    def run(self): 
        task_name_list = [ ... ]
 
        task_func_list = [ ... ]

 
        times = []
        results = []
        statuses = {}
        for i in range(len(task_name_list)):
            thread_task = SyncTaskThread(task_func_list[i], task_name_list[i])
            threads.append(thread_task)
        for i in range(len(task_name_list)):
            threads[i].start()
        for i in range(len(task_name_list)):
            threads[i].join()

        for t in threads:
            if t.is_alive():
                pass
            else:
                time, status, result = t.result
                statuses.update(status)
                times.append(time)
                results.append(
                    _("%s, time spent: " "%s seconds") % (result, round(time, 3))
                )

        results = "\n".join(results)

        return sum(times), statuses, results

class SyncTaskThread(Thread):
    def __init__(self, func, name=""):
        Thread.__init__(self)
        self.name = name
        self.func = func
        self.result = self.func()

def get_result(self):
try:
return self.result
except Exception:
return None

技术
Odoo14安装WKHTMLTOPDF