python 线程和进程

本文探讨了Python中的多线程和多进程概念。强调每个进程间数据不共享,而线程之间能够共享数据。介绍了线程和进程的基本特点,并提到了线程间数据共享的特性。
摘要由CSDN通过智能技术生成
import time
def foo():
    print("start foo")
    time.sleep(1)
    print("end foo")

def bar():
    print("start bar")
    time.sleep(2)
    print("end bar")

start  = time.time()
foo()
bar()
end = time.time()
print(end - start)  # 3.00023s

多线程

import threading
import time


def foo():
    print("start foo")
    time.sleep(1)
    print("end foo")


def bar():
    print("start bar")
    time.sleep(2)
    print("end bar")


start = time.time()
t1 = threading.Thread(target=foo, args=())
t2 = threading.Thread(target=bar, args=())
t1.start()
t2.start()
end = time.time()
print(end - start)  # 0.0009s

多进程

import multiprocessing
import time


def f0(a1):
    time.sleep(3)
    print(a1)


if __name__ == '__main__':  # windows下必须加这句

    t = multiprocessing.Process(target=f0, args=(12,))
    t.daemon = True  # 将daemon设置为True,则主线程不等待子进程,主线程结束则所有结束
    t.start()

    t2 = multiprocessing.Process(target=f0, args=(13,))
    t2.daemon = True
    t2.start()

    print('end')  # 默认情况下等待所有子进程结束,主进程才结束

# result: end

每个进程之间数据不会共享

li = []
 
def f1(i):
    li.append(i)
    print('你好',li)
 
if __name__ =='__main__':#进程不能共用内存
    for i in range(10):
        p = Process(target=f1,args=(i,))
        p.start()
 
'''每个进程都创建一个列表,然后添加一个元素进去,
   每个进程之间的数据是不能共享的

线程之间可以实现数据共享

import threading
li = []


def f1(i):
    li.append(i)
    print('你好', li)


if __name__ == '__main__':  # 进程不能共用内存
    for i in range(10):
        p = threading.Thread(target=f1, args=(i,))
        p.start()

# 线程之间可以数据共享 li的维数据不断增加

参考文章:

https://www.cnblogs.com/xiaobeibei26/p/6484849.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值