进程,线程

import os, timeif __name__ == '__main__':print('the calling process id:%d' % os.getpid())# 创建进程pid = os.fork()if pid == 0:# 子进程print('the child pid is %d' % os.getpid())time.sleep(3)elif pid > 0:# 父进程os.wait() # 等待子进程终止print('[%d]bye-bye' % os.getpid())
import os, sysif __name__ == '__main__':while True:cmd = input('[root@localhost xxxx]# ')if cmd == 'quit' or cmd == 'exit':# 终止进程sys.exit(0) # os._exit()# 'ls -l'cmdls = cmd.split()pid = os.fork()if pid == 0:# child  替换调用进程os.execlp(cmdls[0], *cmdls)# parentos.wait()
from multiprocessing import Process
import timen = 100def pro_test(arg):print('running argument is %s' % arg)global nn += 1print('n的地址:{}, n:{}'.format(id(n), n))time.sleep(1)def pro2_test():global nprint('n的地址:{}, n:{}'.format(id(n), n))print('n:%d' % n)print('''process 2......''')# 进程的构建方式二
class Myprocess(Process):def __init__(self, args):super().__init__()self.args = argsdef run(self):print('hello world with %s' % self.args)if __name__ == '__main__':pro = Process(target=pro_test, args=('python',))# 运行
    pro.start()# 收尸
    pro.join()print(pro.name, pro.pid)pro2 = Process()pro2.run = pro2_testpro2.start() # 启动进程, 并调用run方法
    pro2.join()print(pro2.name, pro2.pid)pro3 = Myprocess('the argument of the process')pro3.start()pro3.join()

两个进程全局变量是独立的:

from multiprocessing import Process, Pipe
import time# 发送
def pro1(args):for i in range(10):# 向管道发送数据
        args.send(i)time.sleep(1)args.close()def pro2(args):while True:# 从管道接收数据r = args.recv()print('from pro1:%d' % r)if __name__ == '__main__':# 管道的创建,得到管道的两端conn1, conn2 = Pipe()obj1 = Process(target=pro1, args=(conn1,))obj2 = Process(target=pro2, args=(conn2,))obj1.start()obj2.start()obj1.join()obj2.join()
from multiprocessing import Process, Queue
import time# 发送
def pro1(que):for i in range(10):# 向队列中写入
        que.put(i)time.sleep(2)def pro2(que):while True:print('from que get:{}'.format(que.get()))if __name__ == '__main__':# 创建队列q = Queue()obj1 = Process(target=pro1, args=(q,))obj2 = Process(target=pro2, args=(q,))obj1.start()obj2.start()obj1.join()obj2.join()

 

from multiprocessing import Pool
import timedef pro_job(s):print('the %d process is running' % s)time.sleep(2)if __name__ == '__main__':# 创建进程池pool = Pool(2)for i in range(5):# 异步添加进程pool.apply_async(func=pro_job, args=(i, ))# 不允许向进程池中添加新的进程
    pool.close()# 收尸pool.join()

 

from multiprocessing import Process
import timedef job():while True:print('hello')time.sleep(1)if __name__ == '__main__':pro = Process(target=job)pro.start()

 

from threading import Thread, Lock
import timelock = Lock() # 保护互斥量
n = 100 # 多线程发成竞争的那段代码就是互斥量def thr_job():print('the new thread is running....')global nlock.acquire()n = 200lock.release()time.sleep(3)if __name__ == '__main__':# 创建线程thr = Thread(target=thr_job, name='不一样', daemon=True)thr.start()print(thr.name, thr.ident)# 加锁
    lock.acquire()print(n)time.sleep(2)print(n + 10)# 解锁
    lock.release()thr.join()

 n = 0 :任务没发下来等待继续发放任务

 n > 0:还有任务发放

n < 0 :没有任务发放完成了

from threading import Thread, local# 使得多线程在使用全局的local绑定变量的时候局部化
lc = local()def fun(s):lc.name = sif __name__ == '__main__':lc.name = 'main'thr = Thread(target=fun, args=('python',))thr.start()thr.join()print(lc.name)

 

转载于:https://www.cnblogs.com/ZHang-/p/10161845.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249965.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

livebos--iframe使用

新建一个方法。建一个参数&#xff0c;iframe控件&#xff0c;虚拟列。然后使用以下信息 <% livebos languagejavascript %>var url LB_ObjURI("Lb_lbOrganization",0,[],["NoTitle"]);var v {"edit" : "url ", "view"…

单行溢出 和多行溢出

/*单行溢出*/.one_txt_cut{overflow: hidden;white-space: nowrap;text-overflow: ellipsis;}.txt_cut{overflow : hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;}转载于:https://www.cnblogs.com/smzd/p/8491583…

Spring方法注入 @Lookup注解使用

情景分析 在Spring的诸多应用场景中bean都是单例形式&#xff0c;当一个单利bean需要和一个非单利bean组合使用或者一个非单利bean和另一个非单利bean组合使用时&#xff0c;我们通常都是将依赖以属性的方式放到bean中来引用&#xff0c;然后以Autowired来标记需要注入的属性。…

Jupyter配置步骤

Jupyter是基于浏览器的可交互式开发工具&#xff0c;在数据科学界非常受欢迎&#xff0c;它功能齐全&#xff0c;使用方便&#xff0c;是一款数据分析和建模挖掘的利器。 本文简介Jupyter的配置和使用过程 一、修改添加国内镜像 通常我会先安装Anaconda&#xff0c;再安装Jupyt…

edittext 属性

1.去掉edittext的底线&#xff0c;设置&#xff0c;不管是edittext&#xff0c;还是appcompatEdittext都是这个属性 转载于:https://www.cnblogs.com/hechangshou/p/9301004.html

定义高亮颜色

/*怎么定义高亮的颜色*/-webkit-tap-highlight-color: transparent;/*透明 其实就是不显示颜色*/-webkit-tap-highlight-color: red; 转载于:https://www.cnblogs.com/smzd/p/8491587.html

springboot 配置webservice接口

导入依赖的jar <!-- webservice cxf --><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-frontend-jaxws</artifactId><version>3.1.6</version></dependency><dependency><groupId>org…

【Django】认证系统

目录 #. auth模块1. 认证 authenticate()2. 登陆 login(HttpRequest, user)3. 注销 logout(request)4. 认证判断 is_authenticated()5. 登陆校验 login_requierd()6. 创建普通用户 create_user()7. 创建超级用户 create_superuser()8. 密码校验 check_password(password)9. 修改…

学习的目的是什么?

学习的目的是为了掌握生存的常识和技能&#xff0c;以便独立地面对世界&#xff1b; 学习的目的是为了遵从生活的规范和律则&#xff0c;以便和谐地与人相处&#xff1b; 学习的目的是为了探索生命的价值和意义&#xff0c;以便有尊严地立于天地之间。 你觉得为什么要学习呢&am…

span里面插入文字

.text-box span::before{ content:attr(data-text);} 转载于:https://www.cnblogs.com/smzd/p/8491664.html

Spring Boot 动态注入的两种方式

通过Profilespring.profiles.active spring.profiles.active&#xff1a;官方解释是激活不同环境下的配置文件&#xff0c;但是实际测试发现没有对应的配置文件也是可以正常执行的。那就可以把这个key当作一个参数来使用 Profile&#xff1a;spring.profiles.active中激活某配…

kernel devel 安装与卸载

1、查看系统内核 uname -r 2、查看已安装kernel-devel uname -a ; rpm -qa kernel\* | sort 3、下载对应的rpm wget xxx/kernel-devel-2.6.32-754.el6.x86_64.rpm 或者 $ sudo yum install "kernel-devel-uname-r $(uname -r)" 4、卸载已安装的内核 yum remove ker…

弹性布局

/* 开启弹性布局的换行 */ flex-wrap: wrap;/* 变为多行了 无法使用 align-items 进行位置设置 align-content 在多行的时候 设置属性 跟 justify-content 一模一样如果只有 一行时 无法生效 *//* 调整元素 在主轴上的 排布方式flex-end 到主轴的末尾flex-start 默认值center…

详解 vue-cli 的打包配置文件代码(给大家写写注释)

一、前言 对于webpack基础不好&#xff0c;node指令不通的童鞋。估计对自己搭建Vue、react脚手架是相当头疼的&#xff0c;有种无从下手的感觉。然而&#xff0c;从头看这2块&#xff0c;耗时太长&#xff0c;而且说实话得练才行&#xff0c;不练练手看不明白。那大多数人就采取…

AutoFac自动注入时报错

错误描述&#xff1a;An error occurred during the activation of a particular registration 解决办法&#xff1a;看到了particular这个单词&#xff0c;用我蹩脚的英语&#xff0c;估计是部分类&#xff1f;结合报错的两个类存在互相引用&#xff0c;这就明白了&#xff0c…

尝试修改源码需要用到git存一下

git reflog查看本地记录 git reset --hard 02a3260 转载于:https://www.cnblogs.com/smzd/p/8492065.html

poj3713 Transferring Sylla 枚举+tarjan判割点

其实就是判断是否为三连通图 三连通图指的是去掉3个点就不连通的图&#xff0c;但是并没有直接求三连通的算法。著名的Tarjan算法可以求解连通和割点&#xff0c;再枚举删除一个点就能达到三连通的目的。 先看用例2&#xff0c;是由用例1去掉一条边而变成非三连通图的&#xff…

html标签大全

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>This is study note</title><base href"我是做外链的&#xff0c;一般在head里面" target"_blank"><style type&q…

布尔文本搜索

select text from products where Match(# column) Against(#condition bool* IN BOOLEAN MODE); 布尔操作符     包含 必须存在 -    排除,必须不存在(即使包含其他指定的词也不返回) >    增加排序等级 <    降低排序等级 ()    把词组成子表达式 …

Linux 安装Zookeeper单机版(使用Mac远程访问)

阅读本文需要先阅读安装Zookeeper<准备> 新建目录 mkdir /usr/local/zookeeper 解压 cd zookeeper压缩包所在目录 tar -xvf zookeeper-3.4.12.tar.gz -C /usr/local/zookeeper 新建目录 mkdir /usr/local/zookeeper/zookeeper-3.4.12/data 配置文件准备 cp /usr/local/zo…