并发!
Python里面的并发分2大类,cpu密集和IO密集,也是面试中经常考的!
多进程,多线程,协程!围绕的库大概有6-7种,如果深入研究会设计到Py3里面最核心的也是最难懂的asyncio库,然而,初学者不需要知道这么多!
简单会用就行,不要一口吃个胖子!
我先把标签建好,详细参考这本"Python编程快速上手"第15章里面15.6/7/8小节
这里就是一个多线程的启动,使用和停止!菜鸟先会用多线程足够了!
等后面再慢慢学习多进程,协程!老鸟如果想仔细看并发,我推荐cookbook里面的,这里面讲的非常细,也很深!(多线程编程)
一个多线程的启动,使用和停止
threading 模块用于创建多个线程,如果需要下载多个文件或同时执行其他任务,这非常有用。
一个简单的包含两个进程的程序
import threading
print('Start of program.')
#为了创建一个 Thread 对象,我们调用 threading.Thread(),并传入关键字参数 target=takeANap
#该 print()调用有 3 个常规参数: 'Cats'、 'Dogs'和'Frogs',以及一个关键字参数: sep= \
#' & '。常规参数可以作为一个列表,传递给 threading.Thread()中的 args 关键字参数。关
#键字参数可以作为一个字典,传递给 threading.Thread()中的 kwargs 关键字参数。
#print('Cats', 'Dogs', 'Frogs',sep="&")
threadObj = threading.Thread(target=print, args=['Cats', 'Dogs', 'Frogs'], kwargs={'sep': ' & '})
#将 threading.Thread()创建的 Thread 对象保存在 threadObj 中,然后调用
#threadObj.start(),创建新的线程,并开始在新线程中执行目标函数
threadObj.start()
print('End of program.')
"""通常,程序在文件中最后一行代码执行后终止(或调用 sys.exit())。但
threadDemo.py 有两个线程。第一个是最初的线程,从程序开始处开始,在 print('End
of program.')后结束。第二个线程是调用 threadObj.start()时创建的,始于 takeANap()
函数的开始处,在 takeANap()返回后结束。
在程序的所有线程终止之前, Python 程序不会终止。在运行 threadDemo.py 时,
即使最初的线程已经终止,第二个线程仍然执行 time.sleep(5)调用。"""
print('Cats', 'Dogs', 'Frogs', sep=" & ")
但是要确保线程只读写局部变量,否则可能会遇到并发问题。以轻松地创建多个新线程,让它们同时运行。但多线程也可能会导致所谓的
并发问题。如果这些线程同时读写变量,导致互相干扰,就会发生并发问题。并发问题可能很难一致地重现,所以难以调试。
最后, Python 程序可以用 subprocess.Popen()函数,启动其他应用程序。命令行参数可以传递给 Popen()调用,用该应用程序打开特定的文档。另外,也可以用 Popen()启动 start、 open 或 see 程序,利用计算机的文件关联,自动弄清楚用来打开文件的应用程序。通过利用计算机上的其他应用程序, Python 程序可以利用它们的能力,满足你的自动化需求
网友评论