首页> 开发语言> Python多线程调用

[文章]Python多线程调用

收藏
0 383 0

Python多线程调用

黄小坚

【摘要】

   在某项目中,需要落地CMDB,蓝鲸CMDB需要从企业原有CMDB中同步数据,由于数据量较大,每次数据同不需要大量的时间,python中有多进程和多线程的调度方法,为了节省时间研究了python多线程任务的办法。

【前言】

线程不等于进程线程是最小的执行单元,进程由至少一个线程组成,一个进程可以包含多个线程。如何调度进程和线程,完全由操作系统决定,程序自己不能决定什么时候执行,执行多长时间。

   python thread实现多线程

*  thread模块启用多线程

thread模块中通过调用start_new_thread()方法来产生新线程

调用方法:thread.start_new_thread ( function, args[, kwargs] )

参数说明:

l  function - 线程函数。

l  args - 传递给线程函数的参数,他必须是个tuple类型。

l  kwargs - 可选参数。

注意:启动线程之后,须确保主线程等待所有子线程返回结果后再退出,如果主线程比子线程早结束,无论其子线程是否是后台线程,都将会中断,抛出异常,如下:


一种简单的确保所有子线程都结束后主线程再结束的方法是添加sleep,需要预先预估子线程完成的时间,如下,多线程成功启动:


*  thread多线程添加锁

thread模块中提供了allocate_lock()方法为子线程添加锁结构

锁的创建:lock = thread.allocate_lock()

锁的状态判断:lock.locked() –锁:True,已经释放:False

锁的释放:lock.release()


 

   python threading实现多线程

thread提供了低级别的、原始的线程以及一个简单的锁,threadingthread的基础上进行了封

Threading模块创建线程,可以直接从threading.Thread继承,然后重写__init__方法和run方法:


Threading模块会等待子线程执行完成自动退出主线程。


开发语言
最近热帖
{{item.Title}} {{item.ViewCount}}
近期热议
{{item.Title}} {{item.PostCount}}