这个世界上你喜欢的人固然不多,但喜欢你的人也不会多啊!只有她才傻傻的喜欢着你,和你分享她的整个世界。如果你不在,她还是会害怕会哭泣的啊!
真讨厌·······这种悲剧啊,在一个人都消失了的时候,再度发现她留在这个世界上的痕迹。可那又有什么用呢?为什么还要提起?就让所有无法挽回的事都随着潮水离去不好吗?
你以为她是公主,她拥有全世界,可他只有你和她的玩具们。

多任务处理--多线程、多进程、协程

1.多线程

1)特点:

线程的并发是利用cpu上下文的切换(是并发,不是并行)

多线程执行的顺序是无序的

多线程共享全局变量

线程是继承在进程里的,没有进程就没有线程

GIL全局解释器锁

只要在进行耗时的IO操作的时候,能释放GIL,所以只要在IO密集型的代码里,用多线程就很合适

2)多任务处理实例

import threading

global_num = 0

lock = threading.Lock()

def test1():

    global global_num

    lock.acquire() 保证在该进程执行期间其他进程无法调用num变量

    for i in range(1000000):

        global_num += 1

    lock.release()

 

def test2():

    global global_num

    lock.acquire()

    for i in range(1000000):

        global_num += 1

    lock.release()

 

t1 = threading.Thread(target=test1)

t2 = threading.Thread(target=test2)

t1.start()

t2.start()

t1.join() 保证两个子进程执行完成后再执行主进程

t2.join()

print(global_num)

 

 

输出结果:

2000000

 

2.多进程

1)特点

一个程序运行起来之后,代码+用到的资源称之为进程,它是操作系统分配资源的基本单位,不仅可以通过线程完成多任务,进程也是可以的

进程之间是相互独立的

cpu密集的时候适合用多进程

进程之间的资源不共享

2)多任务处理实例

import time

import threading

g_num = 0

def edit():

    global g_num

    for i in range(10):

        g_num += 1

def reader():

    print(g_num)

 

if __name__ == '__main__':

    p1 = multiprocessing.Process(target=edit)

    p2 = multiprocessing.Process(target=reader())

    p1.start()

    p2.start()

    p1.join()

    p2.join()

 

输出结果:

10

0

3)进程池

import multiprocessing

import time

from multiprocessing import Pool

 

def test1():

    for i in range(10):

        time.sleep(1)

        print('task1',i)

 

def test2():

    for i in range(10):

        time.sleep(1)

        print('task2',i)

if __name__ == '__main__':

    pool = Pool(2)允许最大同时执行的进程数

    pool.apply_async(test1)

    pool.apply_async(test2)

    pool.close()

    pool.join()

 

 

输出结果:

task1 0

task2 0

task1 1

task2 1

task1 2

task2 2

task1 3

task2 3

 

3.协程

1)特点

协程:也叫微线程,协程是在一个线程里面的

异步IO:遇到io请求就切换

先有进程,再有线程,才能有协程

2)多任务处理实例

import time

import gevent

from gevent import monkey

monkey.patch_all()

 

def test1(n):

    for i in range(n):

        # gevent.sleep(1)

        time.sleep(1)

        print('task1',i)

 

def test2(n):

    for i in range(n):

        # gevent.sleep(1)

        time.sleep(1)

        print('task2',i)

 

g1 = gevent.spawn(test1,10)

g2 = gevent.spawn(test2,10)

g1.join()

g2.join()

 

 

输出结果:

task1 0

task2 0

task1 1

task2 1

task1 2

task2 2

task1 3

task2 3

 

posted @ 2019-06-20 18:18  球接子  阅读(363)  评论(0编辑  收藏  举报
“这个世界有多大,取决于你认识多少人,你每认识一个人,世界对你来说就会变大一些”
“这个世界上还有很多好吃的好玩的好看的东西,可真正属于你的世界其实是很小的,只是你去过的地方吃过的东西和见过的落日,还有在乎你死活的朋友”
“世界喜不喜欢你,只取决于你的朋友喜不喜欢你,每个人都有几个真正的好朋友,他们喜欢你,就是这个世界喜欢你了”
“如果世界真的不喜欢你,那世界就是我的敌人了”
“我是你的好朋友,将来你会有更多的好朋友,只要我们这些好朋友喜欢你,那全世界都喜欢你”
“可只要我们是你的好朋友,我们又怎么会不喜欢你呢?”