python中的多线程方法
import threading
# 通过函数调用的方式实现多线程
def my_print(info):
time.sleep(random.randint(1,10))
print(info + "被执行")
if __name__ == __main__:
t1 = threading.Thread(target = my_print, args = ("线程1",)) #target参数接受要执行的函数, #args参数接受函数传进来的参数,元组表示,后面要多加个逗号
t2 = threading.Thread(target = my_print, args = ("线程2",))
t3 = threading.Thread(target = my_print, args = ("线程3",))
t1.start() #启动线程
t2.start()
t3.start()
会发现每次运行时,各线程运行的顺序时随机的
#演示下线程和进程之间的关系
from threading import Thread
from multiprocessing import Process
def work():
print(os.getpid())
if __name__ == __main__:
t1 = Thread(target=work)
t2 = Thread(target=work)
t1.start()
t2.start()
print("主进程下的主线程PID", os.getpid())
#开启多个进程, 每个进程都有独立的PID
p1 = Process(target=work)
p2 = Process(target=work)
print("主进程下的主线程PID", os.getpid())
运行上面的代码,会发现,通过Thread实现多线程运行时,因为这些线程和主线程同属一个进程,所以进程的PID是相同的,通过Process实现多进程时,发现p1,p2属于不同进程运行,他们的PID和主线程所在的进程就不一样了。
#线程类来实现多线程
from threading import Thread
class Hello(Thread):
def __init__(self,name):
super().__init()__
self.name=name
def run(self): # Thread的start方法被调用时,会自动执行run方法,因此这里需要 #重写run方法,这样就会调用这个run方法,所有的逻辑程序就放这 个run方法里
print("hello %s" % self.name)
t1=Hello("我时一个线程类1")
t2=Hello("我时一个线程类2")
t3=Hello("我时一个线程类2")
t1.start()
t2.start()
t3.start()