python多线程

多进程

from multiprocessing import Process

def getname(name):
    print("start:", name)
    time.sleep(2)
    print("end:", name)


if __name__ == '__main__':
    startTime = time.time()
    p1 = Process(target=getname, args=("xiao",))
    p2 = Process(target=getname, args=("ying",))
    p3 = Process(target=getname, args=("bing",))

    p1.start()
    p2.start()
    p3.start()

    p1.join()
    p2.join()
    p3.join()

    print(time.time() - startTime)

多线程

import threading

def getname(name):
    print("start:", name)
    time.sleep(2)
    print("end:", name)


if __name__ == '__main__':
    startTime = time.time()

    t1 = threading.Thread(target=getname, args=("xiao",))
    t2 = threading.Thread(target=getname, args=("ying",))
    t3 = threading.Thread(target=getname, args=("bing",))

    t1.start()
    t2.start()
    t3.start()

    t1.join()
    t2.join()
    t3.join()

    print(time.time() - startTime)

进程池

from multiprocessing import Pool
import time


# 进程池
def getname(name):
    print("start:", name)
    time.sleep(2)
    print("end:", name)


if __name__ == '__main__':
    startTime = time.time()

    pool = Pool(processes=3)
    names = ["xiao", "ying", "bing"]

    for name in names:
        pool.apply_async(func=getname, args=(name,))

    pool.close()
    pool.join()

    print(time.time() - startTime)

协程 (不需要启动进程或线程)

yield的实现方式

import time
import gevent
from gevent import monkey

# 猴子补丁
monkey.patch_all()


def getname(name):
    print("start:", name)
    time.sleep(2)
    print("end:", name)


if __name__ == '__main__':
    g1 = gevent.spawn(getname, "xiao")
    g2 = gevent.spawn(getname, "ying")
    g3 = gevent.spawn(getname, "bing")

    gevent.joinall([g1, g2, g3])

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦