Python之进程及线程(1)

进程和线程,有时总是让人傻傻分不清,其实进程是资源分配最小单位,线程是程序执行的最小单位。其实一定程度上,进程会占用大量的资源,相比之下,Python的线程会更有优势。

但是,注意!注意!注意!

Python官网的Python版本是基于C开发的版本,简称CPython,内部存在GIL(全局变量锁),由此,CPython在使用多线程时并非几个线程同时运行,要解决这个问题,可以更换Python的解释器(例如使用Java开发的JPython)或者使用别的语言解决GIL问题,通过Python再链接后使用!!!

Python实现多进程、多线程的几种方式,首先是进程。

from multiprocessing import Process

 利用已经写好的包导入即可,在使用过程中注意一下Process的传参,主要是在进程间的通信,以下使用了队列的方式来实现进程之间的通信。

from multiprocessing import Process, Queue
import time

def one(q):
    # 测试进程
    for i in range(3):
        time.sleep(2)
        print('测试进程_one')
    # 测试进程通信
    num = [11,22,33,44]
    for n in num:
        q.put(n)
    print('进程one写入队列完成!')


def two(q):
    # 测试进程
    for i in range(3):
        time.sleep(2)
        print('测试进程_two')
    # 测试进程通信
    new_list = []
    while True:
        new_list.append(q.get())
        if q.empty():
            break  
    print("输出进程two读取进程one的数据!")
    print(new_list)


def main():
    # 用于进程通信
    q = Queue()
    # 设置进程
    p1 = Process(target=one, args=(q,))
    p2 = Process(target=two, args=(q,))
    p1.start()
    p2.start()


if __name__ == "__main__":
    main()  
发布了7 篇原创文章 · 获赞 0 · 访问量 145

猜你喜欢

转载自blog.csdn.net/douziaaa/article/details/105643782