Python进程与线程

Python进程与线程:

什么是线程?什么是进程?

线程是计算机操作系统能够运算调度的最小单位。它被包含在进程之中。是进程中实际运作单位。一条线程是指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同任务。

进程要操作CPU,必须先要创建一个线程,进程是资源的集合,线程是进程的内涵,是一串指令的集合。

所有在同一个进程里的线程是共享同一块内存空间。

线程与进程的区别:

1. 线程共享内存空间,进程的内存是独立的

2.两个子进程实现互独立的,不可以相互访问。

3.同一个进程的线程之间可以直接交流,两个进程想要通信,必须通过一个中间代理来实现。

4.创建新线程很简单,创建新进程需要对其父进程进行一次克隆。

5.一个线程可以控制和操作同一进程里的其他线程,但是进程只能操作子进程。

6.对于主线程的修改,有可能影响到其他线程的运行。但是对一个父进程的修改,不会影响子进程的运行。

实例一:

import  threading
import time
def run(n):
print("task",n)
time.sleep(2)


t1=threading.Thread(target=run,args=("t1",))
t2=threading.Thread(target=run,args=("t2",))
t1.start()
t2.start()
实例二:
import  threading
class MyThread(threading.Thread):
def __init__(self,n):
super(MyThread,self).__init__()
self.n=n
def run(self):
print("runnint task:",self.n)



t1=MyThread("t1")
t2=MyThread("t2")
t1.start()
t2.start()

实例三:
import  threading,time
class MyThread(threading.Thread):
def __init__(self,n):
super(MyThread,self).__init__()
self.n=n
def run(self):
print("runnint task:",self.n)
#time.sleep(2)
start_time=time.time()
t_obj=[]
for i in range(50):
t=MyThread("t-%s"%i)
t.start()
#t.join()
t_obj.append(t)
for t in t_obj:#循环实例列表,等待所有线程结束
t.join()


print("cost:",time.time()-start_time)
守护进程,守护主线程退出,子线程无论完没完成都会退出:
import  threading,time
class MyThread(threading.Thread):
def __init__(self,n):
super(MyThread,self).__init__()
self.n=n
def run(self):
print("runnint task:",self.n)
#time.sleep(2)
start_time=time.time()
t_obj=[]
for i in range(50):
t=MyThread("t-%s"%i)
t.setDaemon(True)#把当前线程设置为守护线程,一定在start之前
t.start()
#t.join()
t_obj.append(t)
#for t in t_obj:
# t.join()

print("cost:",time.time()-start_time)

原文地址:https://www.cnblogs.com/gycone/p/10142732.html