美文网首页
并发2019-03-29

并发2019-03-29

作者: swagsmile | 来源:发表于2019-03-29 21:34 被阅读0次

    并发!
    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 程序可以利用它们的能力,满足你的自动化需求

    相关文章

      网友评论

          本文标题:并发2019-03-29

          本文链接:https://www.haomeiwen.com/subject/btarbqtx.html