一、并发编程概念
import time
import threading
def worker(n):
print('函数执行开始与:{}'.format(time.ctime()))
time.sleep(n)
print('函数执行结束于:{}'.format(time.ctime()))
def main():
print(f'【主函数执行开始于:{time.ctime()}】')
threads=[]
t1=threading.Thread(target=worker,args=(4,))
threads.append(t1)
t2 = threading.Thread(target=worker, args=(2,))
threads.append(t2)
for t in threads:
t.start()
for t in threads:
t.join()
print(f'【主函数执行结束于:{time.ctime()}】')
if __name__=='__main__':
main()
运行结果为:
【主函数执行开始于:Wed Mar 18 10:59:58 2020】
函数执行开始与:Wed Mar 18 10:59:58 2020
函数执行开始与:Wed Mar 18 10:59:58 2020
函数执行结束于:Wed Mar 18 11:00:00 2020
函数执行结束于:Wed Mar 18 11:00:02 2020
【主函数执行结束于:Wed Mar 18 11:00:02 2020】
2.用派生类实现多线程
import time
import threading
"threading.Thread派生类实现多线程"
def worker(n):
print('{}函数执行开始于:{}'.format(threading.current_thread().name,time.ctime()))
time.sleep(n)
print(f'{threading.current_thread().name}函数执行结束于:{time.ctime}')
class MyThread(threading.Thread):
def __init__(self,func,args):
threading.Thread.__init__(self )
self.func=func
self.args=args
def run(self):
self.func(*self.args)
def main():
print(f'【主函数执行开始于:{time.ctime()}】')
threads=[]
t1=MyThread(worker,(4,))
threads.append(t1)
t2 = MyThread(worker, (2,))
threads.append(t2)
for t in threads:
t.start()
for t in threads:
t.join()
print(f'【主函数执行结束于:{time.ctime()}】')
if __name__=='__main__':
main()
运行结果:
【主函数执行开始于:Wed Mar 18 11:14:49 2020】
Thread-1函数执行开始于:Wed Mar 18 11:14:49 2020
Thread-2函数执行开始于:Wed Mar 18 11:14:49 2020
Thread-2函数执行结束于:<built-in function ctime>
Thread-1函数执行结束于:<built-in function ctime>
【主函数执行结束于:Wed Mar 18 11:14:53 2020】
3.多进程
import multiprocessing
import time
def func(n):
print(f'{multiprocessing.current_process().name} 执行开始于:{time.ctime()}')
time.sleep(n)
print(f'{multiprocessing.current_process().name} 执行结束于:{time.ctime()}')
def main():
print(f'主函数运行于:{time.ctime()}')
process=[]
p1=multiprocessing.Process (target=func,arg=(4,))
process.append(p1)
p2=multiprocessing.Process (target=func,arg=(2,))
process.append(p2)
for p in process:
p.start()
for p in process:
p.join()
print(f'主函数结束于:{time.ctime()}')
if __name__=='__main__':
main()