python 标准库 —— 线程与同步(threading、multiprocessing)
来源:互联网 发布:怎么在淘宝上投诉卖家 编辑:程序博客网 时间:2024/06/06 17:48
1. 创建线程
使用 os 下的 fork() 函数调用(仅限 Unix 系统)
import osprint('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 Processdef 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 osimport threadingimport multiprocessingdef 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。
阅读全文
0 0
- python 标准库 —— 线程与同步(threading、multiprocessing)
- python中的进程、线程(threading、multiprocessing、Queue、subprocess)
- Python标准库08 多线程与同步 (threading包)
- Python标准库08 多线程与同步 (threading包)
- Python标准库08 多线程与同步 (threading包)
- Python标准库08 多线程与同步 (threading包)
- 8.Python标准库_多线程与同步 (threading包)
- Python标准库 多线程与同步 (threading包)
- Multiprocessing vs Threading Python
- Python multiprocessing threading
- [Python]Multiprocessing vs Threading Python
- 【python标准库学习】thread,threading(二)多线程同步
- 线程与threading模块(python)
- Python学习笔记16:标准库之多线程(threading包)
- python标准库之多进程 (multiprocessing包)
- Python标准模块--multiprocessing
- python的threading和multiprocessing模块初探
- python的threading和multiprocessing模块初探
- Java运行结果返回的是@加一串乱七八糟时
- 2. Add Two Numbers
- kettle的入门
- 刷题笔记:C/C++专项练习7
- Unable to open debugger port (127.0.0.1:63777): java.net.BindException "Address already in use: JVM
- python 标准库 —— 线程与同步(threading、multiprocessing)
- <剑指offer 面试题5>替换空格(Java)
- Java/OSGi ClassLoader
- linux平台下的写文件刷新
- “QCoreApplication::applicationDirPath: Please instantiate the QApplication object first”问题
- 设计模式之——策略模式
- 中文乱码处理
- 数据结构学习日志--排序算法
- [LC][array][Binary Search] 278. First Bad Version