python实现多任务(二)—— 进程

Python实现多任务(2)#

进程

使用multiprocessing完成多进程

import time
import multiprocessing


def sing():
for i in range(5):
    print("* * *singing* * *")
    time.sleep(1)

def dance():
for i in range(5):
    print("* * *dancing* * *")
    time.sleep(1)

def start_process():
t1 = multiprocessing.Process(target=sing)
t2 = multiprocessing.Process(target=dance)

t1.start()
t2.start()

if __name__ == '__main__':

	start_process()

进程池

import multiprocessing
import os, time, random


def work(msg):
    t_start = time.time()
    print("%s进行中,进程号为%d\n"% (msg, os.getpid()))
    time.sleep(random.random()*3)
    t_stop = time.time()
    print("%s执行完毕,耗时%.2fs\n" % (msg, (t_stop-t_start)))


def main():
    po = multiprocessing.Pool(3)
    for i in range(0, 10):
        po.apply_async(work, (i,))

    print("---start---")
    po.close()
    po.join() #关闭前让任务池中的进程执行完
    print("--- End ---")


if __name__ == '__main__':
	main()

使用队列完成进程间通信

import multiprocessing


def download_web(q):
    data = [11, 22, 33, 44]
    for temp in data:
        q.put(temp)
    print("写入队列结束")


def analysis_data(q):
    list_data = list()
    while True:
        data = q.get()
        list_data.append(data)
        if q.empty():
            break
    print(list_data)

def main():
    # 创建队列
    q = multiprocessing.Queue()

    p1 = multiprocessing.Process(target=download_web, args=(q,))
    p2 = multiprocessing.Process(target=analysis_data, 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、付费专栏及课程。

余额充值