python 标准库 —— 线程与同步(threading、multiprocessing)
1. 创建线程
使用 os 下的 fork() 函数调用(仅限 Unix 系统)
import os
print('current process (%s) starts ...' % (os.getpid()))
pid = os.fork()
if pid < 0:
print('fork error.')
elif pid == 0:
print('now i am the child process (%s)' % (os.getpid()))
# 函数执行到这里时,是离开父进程的上下文,进入子进程的上下文,因此此时 os.getpid() 是子进程的进程号;
else:
print('i (%s) created the child process (%s)' % (os.getpid(), pid))
# 子进程调用结束,返回父进程 # 完整的执行顺序是这样的,父进程 => 子进程 => 父进程
multiprocessing 使用 Process 类创建进程对象:
from multiprocessing import Process
def run_proc(name):
print('Child process %s (%s)' % (name, os.getpid())) print('Current process (%s).' % (os.getpid()))
for i in range(5):
p = Process(target=run_proc, args=(str(i), ))
p.start()
p.join()
2. 注意进程(process)和线程(thread)的区别
Python标准库10 多进程初步 (multiprocessing包)
python 中创建进程使用 multiprocessing 库,创建线程则是 threading 库,二者的区别在于,如下例所示:
import os
import threading
import multiprocessing
def worker(sign, lock):
lock.acquire()
print(sign, os.getpid())
lock.release()
print('Main: ', os.getpid())
record = []
lock = threading.Lock()
for i in range(5):
thread = threading.Thread(target=worker, args=(" threading %s" % i, lock))
thread.start()
record.append(thread)
for thread in record:
thread.join()
record = []
lock = multiprocessing.Lock()
for i in range(5):
process = multiprocessing.Process(target=worker, args=(' processing %s'%i, lock))
process.start()
record.append(process)
for process in record:
process.join()
所有Thread的PID都与主程序相同,而每个Process都有一个不同的PID。
python 标准库 —— 线程与同步(threading、multiprocessing)的更多相关文章
- python第六天 函数 python标准库实例大全
今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...
- 转--Python标准库之一句话概括
作者原文链接 想掌握Python标准库,读它的官方文档很重要.本文并非此文档的复制版,而是对每一个库的一句话概括以及它的主要函数,由此用什么库心里就会有数了. 文本处理 string: 提供了字符集: ...
- Python 标准库一览(Python进阶学习)
转自:http://blog.csdn.net/jurbo/article/details/52334345 写这个的起因是,还是因为在做Python challenge的时候,有的时候想解决问题,连 ...
- python 标准库大全
python 标准库 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata:Unicode字符数据库 string ...
- python标准库00 学习准备
Python标准库----走马观花 python有一套很有用的标准库.标准库会随着python解释器一起安装在你的电脑上的.它是python的一个组成部分.这些标准库是python为你准备的利器,可以 ...
- Python标准库——走马观花
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python有一套很有用的标准库(standard library).标准库会随着 ...
- Python标准库的学习准备
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python标准库是Python强大的动力所在,我们已经在前文中有所介绍.由于标准 ...
- Python标准库概览
Python标准库通常被称为"自带的电池",自然地提供了广泛的功能,涵盖了大概200个左右的包与模块.不断有高质量的包或模块被开发出来,极大的丰富了标准库.但有些模块放在标准库中很 ...
- Python标准库-datatime和time
Python标准库-datatime和time 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.标准库datatime 1>.datatime模块 #!/usr/bin/e ...
随机推荐
- jvm 调优参数
-server -Xms6000M -Xmx6000M -Xmn500M -XX:PermSize=500M -XX:MaxPermSize=500M -XX:SurvivorRatio=65536 ...
- C# .Net 下 x86使用大内存的处理
/LARGEADDRESSAWARE 选项通知链接器应用程序可处理大于 2 GB 的地址. 在 64 位编译器中,默认情况下启用此选项. 在 32 位编译器中,如果未在链接器行上指定 /LARGEAD ...
- SourceTree超前一个版本,落后N个版本
SourceTree超前一个版本,落后N个版本 在使用SourceTree的时候经常会遇见超前一个版本,落后N个版本的情况,遇见这种情况应该怎么办呢? 首先打开终端,最好是从SourceTree里 ...
- xpath 获取父级,和同级
XPath轴(XPath Axes)可定义某个相对于当前节点的节点集: 1.child 选取当前节点的所有子元素 2.parent 选取当前节点的父节点 3.descendant 选取当前节点的所有后 ...
- wordpress 获取分类ID,分类标题,分类描述,分类链接url函数
get_cat_ID() 根据分类名称获取分类ID ///// get_cat_name() 根据分类ID获取分类名称 用法:<?phpget_cat_ID( $cat_name ...
- 【BZOJ4542】[Hnoi2016]大数 莫队
[BZOJ4542][Hnoi2016]大数 Description 小 B 有一个很大的数 S,长度达到了 N 位:这个数可以看成是一个串,它可能有前导 0,例如00009312345.小B还有一个 ...
- hdu_吃糖果(思维题)
吃糖果 Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submiss ...
- Angular中的$cacheFactory的作用和用法
1.Angular中的$cacheFactory的作用: (1)put(key,value); 在缓存对象中插入一个键值对(key,value). (2)get(key); 在缓存对象中通过指定 ...
- Python菜鸟之路:Python基础(三)
一.编码 推荐阅读<字符编码的前世今生>:http://tgideas.qq.com/webplat/info/news_version3/804/808/811/m579/201307/ ...
- oracle chain
[oracle@tyger dbs]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Tue May 6 13:02 ...