Python并发多线程案例展示

Time will tell.

Python并发多线程案例展示_第1张图片

多线程的优点:

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

每个线程都有一组CPU寄存器,称为线程的上下文。该上下文反映了线程上次运行该线程的CPU寄存器的状态。

其他线程正在运行时,当前的线程可以暂时搁置,也称为睡眠。


Python3 线程常用的两个模块:_threadthreading

Python3 中不能再使用thread模块,为了兼容性,Python3 将 thread 重命名为_thread

Python并发多线程案例展示_第2张图片

一、开启线程的两种方式

方式一:

from threading import Thread
import time
def sayhi(name):
    time.sleep(2)
    print('%s say hello' %name)

if __name__ == '__main__':
    t=Thread(target=sayhi,args=('太白',))
    t.start()
    print('主线程')

方式二:

from threading import Thread
import time
class Sayhi(Thread):
    def __init__(self,name):
        super().__init__()
        self.name=name
    def run(self):
        time.sleep(2)
        print('%s say hello' % self.name)


if __name__ == '__main__':
    t = Sayhi('egon')
    t.start()
    print('主线程')

二、在一个进程下开启多个线程,与在一个进程下开启多个子进程的区别


开启速度对比:

from threading import Thread
from multiprocessing import Process
import os

def work():
    print('hello')

if __name__ == '__main__':
    #在主进程下开启线程
    t=Thread(target=work)
    t.start()
    print('主线程/主进程')
    '''
    打印结果:
    hello
    主线程/主进程
    '''

    #在主进程下开启子进程
    t=Process(target=work)
    t.start()
    print('主线程/主进程')
    '''
    打印结果:
    主线程/主进程
    hello
    '''


对比pid:

from threading import Thread
from multiprocessing import Process
import os

def work():
    print('hello',os.getpid())

if __name__ == '__main__':
    #part1:在主进程下开启多个线程,每个线程都跟主进程的pid一样
    t1=Thread(target=work)
    t2=Thread(target=work)
    t1.start()
    t2.start()
    print('主线程/主进程pid',os.getpid())

    #part2:开多个进程,每个进程都有不同的pid
    p1=Process(target=work)
    p2=Process(target=work)
    p1.start()
    p2.start()
    print('主线程/主进程pid',os.getpid(

你可能感兴趣的:(python,多线程,python,多进程,软件测试,测试工程师)