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 ...
随机推荐
- 查看vnc server的日志
grep vnc /var/log/messages 转自: http://blog.csdn.net/denghua10/article/details/39107309
- iOS_3_图片浏览
终于效果图: BeyondViewController.h // // BeyondViewController.h // 03_图片浏览 // // Created by beyond on 14- ...
- Lumen开发:lumen源码解读之初始化(5)——注册(register)与启动(boot)
版权声明:本文为博主原创文章,未经博主允许不得转载. register()是在服务容器注册服务, bootstrap/app.php /** * 注册外部服务 */ $app->register ...
- 调整虚拟机中Linux的分辨率
1 在虚拟机配置中,将显示的缓存提高,CPU也提高. 2 运行Linux,在system-preferences-display中调整分辨率
- 纯JS实现动态时间
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Dire Wolf(区间DP)
Dire Wolf Time Limit: 5000/5000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others)Total ...
- Asp.Net MVC3中如何进行单元测试?
下面我们就以一个示例演示一下如何进行单元测试? public Model.UserInfo UpdateEntity(Model.UserInfo entity) { db.UserInfo.Atta ...
- android菜鸟学习笔记24----与服务器端交互(一)使用HttpURLConnection和HttpClient请求服务端数据
主要是基于HTTP协议与服务端进行交互. 涉及到的类和接口有:URL.HttpURLConnection.HttpClient等 URL: 使用一个String类型的url构造一个URL对象,如: U ...
- Zookeeper数据与存储
一.前言 前面分析了Zookeeper对请求的处理,本篇博文接着分析Zookeeper中如何对底层数据进行存储,数据存储被分为内存数据存储于磁盘数据存储. 二.数据与存储 2.1 内存数据 Zooke ...
- host更新
http://alsohosts.herokuapp.com/ google镜像站https://goge.ml/