博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 进程复习
阅读量:6342 次
发布时间:2019-06-22

本文共 1613 字,大约阅读时间需要 5 分钟。

import osimport timeret = os.fork() # 创建子线程if ret ==0: # 子进程中返回值为0,父进程>0    while True:        print('......1......')        time.sleep(1)else:    while True:        print('......2......')        time.sleep(1)

 多fork问题,以下代码会出现4个进程

import osimport timeret = os.fork()if ret ==0:    print('......1......')else:    print('......2......')ret = os.fork()if ret ==0:    print('......11......')else:    print('......22.....')

import osimport timeret = os.fork()if ret ==0:    print('......1......')else:    print('......2......')    ret = os.fork()    if ret ==0:        print('......11......')    else:        print('......22.....')

 进程间通信

进程之间默认无关联

普通进程间通信用 Queue队列

进程池中用Manager().Queue()

q.qsize()

q.full()

q.empty()

q.put()

q.get()

q.put_nowait()

q.get_nowait()

多进程文件拷贝案例

from multiprocessing import Pool,Managerimport osdef copyFileName(name,oldFolderName,newFolderName,queue):    '完成copy一个文件的功能'    fr = open(oldFolderName + '/' + name)    fw = open(newFolderName + '/' + name,'w')    content = fr.read()    fw.write(content)    fr.close()    fw.close()        queue.put(name)def main():        # 0,获取永远要copy的文件夹名字    oldFolderName = input('请输入文件夹的名字:')    # 1.创建一个文件夹    newFolderName = oldFolderName + '-复件'    os.mkdir(newFolderName)    # 2.获取old文件夹中所有文件的名字    fileNames = os.listdir(oldFolderName)    # 3.使用多进程的方式copy原文件夹中所有文件到新的文件夹中    pool = Pool(5)        #创建队列,计数    queue = Manager().Queue()    for name in fileNames:        pool.apply_async(copyFileName,args=(name,oldFolderName,newFolderName,queue))        num = 0    allNum = len(fileNames)    while num

 

转载于:https://www.cnblogs.com/Erick-L/p/7135859.html

你可能感兴趣的文章
lucene bug的报告经历
查看>>
火狐访问HTTPS网站显示连接不安全的解决方法
查看>>
防火墙(一)主机型防火墙
查看>>
基于哈夫曼编码的压缩算法的实现
查看>>
TCP长连接与短连接的区别
查看>>
sed tr
查看>>
FTP文件传输服务器(详解)
查看>>
ERROR OGG-01172 Discard file (/oradata/gglog/repl.dsc) exceeded max bytes (500000000).
查看>>
Windows 8快捷键
查看>>
演示:使用Sniffer统计与分析流量
查看>>
Redis常用命令入门——列表类型(一级二级缓存技术)
查看>>
HTML5 <Audio>标签API整理(一)
查看>>
MyBatis绑定错误[Invalid bound statement (not found)]
查看>>
SQL Server:移动系统数据库
查看>>
(转)Linux下增加交换分区的大小
查看>>
关于程序中用到的脚本
查看>>
Oracle RAC 并发与架构
查看>>
Wireshark抓包工具
查看>>
js中的json对象和字符串之间的转化
查看>>
【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)
查看>>