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()  

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值