线程进程

threading

import threading
import time
lock = threading.RLock()
def process(arg):
lock.acquire()
print(arg)
time.sleep(5)
print("ok")
lock.release()
# for i in range(0,10):
# process(i)
for i in range(0,10):
t = threading.Thread(target=process,args=(i,))
t.setDaemon(True)#设置主线程是否等待子线程执行完成,默认等
t.start()
t.join(2)#等待线程执行完成,最大等2s,setdaemon后叠加成20s









event

import threading
def do(event):
print("1")
event.wait()
print("2")
event_obj = threading.Event()
for i in range(1,5):
t = threading.Thread(target=do,args=(event_obj,))
t.start()
#阻塞线程
input("")
event_obj.set()#









lock

import threading
import time
number = 0
lock = threading.RLock()

def func():
global number
lock.acquire()#获得锁
number += 1
time.sleep(0.5)
# print(i)
print(number)
# i+=1
lock.release()#释放锁

for i in range(0,10):
t = threading.Thread(target=func)#,args=(i)
t.start()
# 函数里面加中括号就表示是可选的([])



multiprocessing

import multiprocessing
def f(name):
print(name)
if __name__ == '__main__':
m = multiprocessing.Process(target=f,args=("tom",))
m.start()





总结

#进程
# 优点:同时利用多个CPU,能够同时进行多个操作
# 缺点:耗费资源(重新开辟内存空间)
#线程
# 优点:共享内存,IO操作时,创造并发操作
# 缺点:抢占资源
#进程不是越多越好,cpu个数=进程个数
#线程也不是越多越好,具体案例具体分析,请求上下文切换耗时

#GIL 》全局解释器锁
#计算机中执行任务的最小单元:线程
#IO操作不利用CPU
#IO密集型(不用CPU):多线程
#计算密集型(用CPU):多进程
# 进程和线程的目的:提高执行效率
# 1.单进程单线程




原文地址:https://www.cnblogs.com/currynashinians000/p/8724359.html