python之《线程与进程》

线程:是操作系统最小的调度单位,是一串指令的集合

进程:eg:QQ要以一个整体的形式暴露给操作系统管理,里面包含对各种资源的调用,内存对各种资源管理的集合叫做进程

进程操作cpu必须先创建一个线程,只有线程才能操作cpu

所一在同一进程中的线程是共享同一片内存空间的,但是两个线程不能在同一块空间里运作

主线程和子线程运行是并行的

import threading
import time
def run(name):
    print('in the %s' % name)
    time.sleep(2)

首先我们设置一个函数我们开启两个线程

t2 = threading.Thread(target=run,args=('t2',))
t1 = threading.Thread(target=run,args=('t1',))
t1.start()
t2.start()

你就会看到 并行的结果了,可是出现了一个问题 我们向要在进程结束后使用其结果该怎么办呢?

我们可以使用join哦

star_time = time.time()

r_obj = []
for i in range(50):
    t = threading.Thread(target=run, args=('t %s' % i, ))
    t.setDaemon(True)  # 把子线程设置成守护线程
    t.start()

    r_obj.append(t)
for i in r_obj:
    i.join()

可以看到我们把每一个进程丢进了数组,来是他们结束那么后面我们就可以达到效果了

顺便提一下我们还有一个使用类的方法来开多进程哦

# class Mythraed(threading.Thread):
#     def __init__(self,name):
#         super(Mythraed, self).__init__()
#         self.name = name
#
#     def run(self):
#         print('run the %s',self.name)
#         time.sleep(2)

# t1 = Mythraed('t1')
# t2 = Mythraed('t2')
# t1.start()
# t2.start()

猜你喜欢

转载自www.cnblogs.com/BookMiki/p/10200895.html