python_线程读写操作<一>

线程读写操作

import threading,random,queue
q = queue.Queue()
alist=[]
def shengchan():
    for i in range(10):
        alist.append(random.randint(1,20))
    q.put(alist)
    print('随机生成的十个数是%s'%alist)
def xiaofei():
    with open('xiabo.txt','w+',encoding='utf8') as f:
        f.write(str(q.get()))
        f.seek(0)
        c =f.read()
        print(c)
if __name__=='__main__':
    t1 = threading.Thread(target=shengchan)
    t2 = threading.Thread(target=xiaofei)
    t1.start()
    t2.start()

进程池相关

from multiprocessing import Pool  # 导入模块进程池
import os, time, random  # 导入windows系统,时间,随机数模块


# print(random.random())
def task(name):  # name是一个形参,先分析函数功能
    print('任务跑在 %s (%d)...' % (name, os.getpid()))  # 打印了进程池传的参数i,还有进程编号
    start = time.time()  # 记录一个开始时间
    time.sleep(random.random() * 3)  # 随机0-3之间的数
    # print(random.random()*3) %s 字符串 %d 整型 %f 浮点型
    end = time.time()  # 结束时间
    print('任务 %s 跑了 %0.2f时间' % (name, (end - start)))  # 结束减去开始时间可以得出跑了多长时间算出函数运行时间


if __name__ == '__main__':
    print('父进程是%d' % os.getpid())  # 获取当前进程编号ID
    p = Pool(4)  # 使用进程池类方法创建了4个进程
    for i in range(1, 6):  # 给4个进程分派了5个任务任务编号是1,2,3,4,5
        p.apply_async(task, args=(i,))  # apply_async 是异步非阻塞的。# 让进程池执行了task函数,传的参数是i
    # 意思就是:不用等待当前进程执行完毕,随时根据系统调度来进行进程切换。
    print('等待所有子进程跑完...')
    p.close()  # 关闭进程池,因为后边有join必须保证子进程不再乱跑
    # time.sleep(2)
    # p.join()  # 让所有的进程互相等待大家一起结束回家吃饭
    print('所有的子进程跑完了')

 

转载于:https://www.cnblogs.com/zhichao123/p/11240842.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值