测试

[Python系列]Python多线程

2017-07-26  本文已影响18人  测试你个头

背景:说到多线程,我们会想到的是:异步编程、同步(锁)、共享变量、线程池等等,那么Python里面多线程是如何实现的?

1.新建一个线程

import threading

// target是线程需要执行的方法,args是线程方法需要传入的参数
t1 = threading.Thread(target=processservice.biz_monitor_process, args=(src.globals.xspace_im_monitored_process, 5))  
t1.setDaemon(true) //设置线程为守护线程
t1.start()

im_page = xspaceimpageservice.XSpaceImPageService()

// 无需传参
t3 = threading.Thread(target=im_page.biz_servicer_chat)
t3.start()
t3.join()

2.线程同步(锁)

以Lock为例:

mutex = thread.allocate_lock()
mutex = threading.Lock()
mutex.acquire([timeout])
mutex.release()
// 创建一个lock实例
mutex = threading.Lock()
// 加锁
if mutex.acquire(1):  
            // 线程互斥执行的代码
            num = num+1
            msg = self.name+' set num to '+str(num)
            print msg
            // 释放锁
            mutex.release()

3.线程池
如果需要使用线程池的话,需要首先安装threadpool包

pip install threadpool 

范例code

// 实例一个线程数为poolsize的线程池
pool = threadpool.ThreadPool(poolsize)  

// makeRequests传入需要线程执行的方法,以及参数,最后的callback非必选,默认为空,创建线程任务
requests = pool.makeRequests(some_callable, list_of_args, callback)  

// 这里用map函数,将线程任务放到线程池中
map(pool.putRequest,request_list) 

// wait方法是一个阻塞方法,用于等待线程池中所有线程执行完后返回
pool.wait() 
上一篇下一篇

猜你喜欢

热点阅读