Python中线程与进程的区别

1、线程:threading,能够完成多任务,比如一个QQ中多个聊天窗口。(轻量级)

        在同一时间分批量去做很多事情。减少运算时间。

import threading

def thread_job():
     print('this is an added Threaf,number is %s' % threading.current_thread())




def main():

    add_thread = threading.Thread(target = thread_job)           # 添加一个线程

    add_thread.start()                        # 运行线程

    print(threading.active_count())           # 计算有多少激活的线程

    print(threading.enumerate())              # 输出激活的线程都有那几个

    print(threading.current_thread())         # 输出现在正在运行的线程

if __name__ == '__main__()':
    main()

`多线程中的join,想要所有线程的任务都结束,最后在输出print(‘all done\n'),则需要用到join。

import threading


def thread_job():
    print('T1 start\n')
    
    for i in range(10):
        time.sleep(0.1)
    print('T1 finish\n')




def main():

    add_thread = threading.Thread(target = thread_job, name = 'T1')  # 给线命名为T1

    add_thread.start()                        # 运行线程

    add_thread.join()

    print(‘all done\n')


if __name__ == '__main__()':
    main()

        多线程的运算结果是没有返回值的,所以需要把多线程的运算结果放入到队列中,然后到主线程中再拿出来进行计算。用到Queue.

inmport threading
import time
from queue import Queue

def job(l):
    for i in range(len(l)):
        l[i] = l[i]**2
        return l

def multithreading(data):
    q = Queue()                              # 计算出来的返回值放入到q中,替代return的功能
    threads = []
    data = [[1,2,3],[3,4,5],[4,4,4],[5,5,5]]
    for i in range(4):                       # 定义4个线程
        t = threading.Thread(target = job, args = (data[i]),q)
        t.start()
        threads.append(t)

    for thread in threads:
        thread.join()                         # 加载到主线程,等所有线程运行完在返回运行值

    result = []

    for _ in range(4):
        # 每次按顺序拿出一个值
        result.append(q.get())

    print(result)


def __name__ == '__main__()':
    multithreading()

2、进程:能够完成多任务,比如一台电脑上可以运行多个QQ。(资源以及代码的总称,先有进程最后才有线程,进程:资源分配的单位,线程:操作系统调度的单位)线程拿着资源组合进行运行。会造成资源浪费。

3、多线程运行图:

4、开始运行多个线程,线程之间相互不影响,则需要添加lock

        定义:lock = threading.Lock()

        程序开始:lock.aquire();

        程序结束:lock.release()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

。七十二。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值