即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

python学习和进阶学习和进阶笔记(七)多线程多任务开发

编程语言 u011602557 82℃ 0评论
本文目录
[隐藏]

多线程编程用于需要并发的时候,比如上一次学的服务器,单线程编写会很困难,用多线程会方便许多。在本文结束部分会给出一个opencv采集视频,并使用多线程控制其播放的例子。

1.开始

多线程的使用需要threading模块

import threading

创建一个线程:

t = threading.Thread(target = func, args=(5,),name = 'control')
t.start()

其中target参数为要运行的线程,name为线程的名字,args为可选择传入该线程的参数。


使用线程:

t.start()
t.join()

start()方法是开始运行该线程,join()方法是阻塞主线程,直至t线程运行完毕。


当需要多个线程同时运行时,join方法必须都放在start之后。

2.一个例子

import cv2
import numpy
import time,threading

state = 1
def control_thread():
    global state
    while(1):
        str = raw_input()
        if(str=='q'):
            break;
        state = int(str)
def video():
    global state
    cap = cv2.VideoCapture('C:\\comic.mp4')
    while(1):
        ret,frame = cap.read()
        frame = cv2.resize(frame,None,fx=0.5,fy=0.5,interpolation=cv2.INTER_CUBIC)
        fps = cap.get(cv2.cv.CV_CAP_PROP_FPS)
        cv2.imshow("window",frame)
        if(cv2.waitKey(state) & 0xff==ord('q')):
            break;

def mainfunc():
    t1 = threading.Thread(target = control_thread,name = 'control')
    t2 = threading.Thread(target = video,name = 'control')
    t1.start()
    t2.start()
    t1.join()
    t2.join()

if __name__ == '__main__':
    mainfunc()

开始播放视频后,可以在控制台输入数字控制其播放速度。

参考资料:


廖雪峰教程:


http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832360548a6491f20c62d427287739fcfa5d5be1f000


opencv使用摄像头:http://blog.csdn.net/huanglu_thu13/article/details/52337013


计算fps:http://blog.csdn.net/u010167269/article/details/53303340


了解Join:http://www.cnblogs.com/warioland/archive/2012/01/27/2330139.html

转载请注明:CodingBlog » python学习和进阶学习和进阶笔记(七)多线程多任务开发

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情