Process类:
构造方法:
Process([group[,target[,name[,args[,kwargs]]]]])
group:线程组,目前还没有实现,库引用中提示必须是None;
target:要执行的方法
name:进程名
args/kwargs:要传入方法的参数。
实例方法:
is_alive():返回进程是否在运行
join([timeout]):阻塞当前上下文环境的进程,直到用此方法的进程终止或到达指定的timeout(可选参数)。
start():进程准备就绪,等待CPU调度
run():start()调用run方法,如果实例进程时未制定传入target,这star执行默认run()方法。
terminate():不管任务十分完成,立即停止工作进程。
属性:
authkey
daemon:和线程的setDeamon功能一样
exitcode(进程在运行时未None、如果为-N,表示被信号N结束)
name:进程名字。
pid:进程号。
#进程间通信
#Queue
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: process_queue
# time: 2021/05/23
from multiprocessing import Process,Queue
def f():
q.put([42,2,'hello']) #NameError: name 'q' is not defined
if __name__ == '__main__':
q = Queue()
p_list=[]
for i in range(3):
p = Process(target=f)
p_list.append(p)
p.start()
print(q.get())
print(q.get())
print(q.get())
for i in p_list:
i.join()
/home/smoke/文档/DocumentFile/PycharmProjects/选课系统Demo/Jaime/venv/bin/python /home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/join/process_queue.py
[42, 2, 'hello']
[42, 2, 'hello']
[42, 2, 'hello']
Process finished with exit code 0
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: process_queue
# time: 2021/05/23
from multiprocessing import Process,Queue
def f(q):
q.put([42,2,'hello']) #NameError: name 'q' is not defined
if __name__ == '__main__':
q = Queue()
p_list=[]
for i in range(3):
p = Process(target=f,args=(q,)) #将q传给子进程
p_list.append(p)
p.start()
print(q.get())
print(q.get())
print(q.get())
for i in p_list:
i.join()
/home/smoke/文档/DocumentFile/PycharmProjects/选课系统Demo/Jaime/venv/bin/python /home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/join/process_queue.py
[42, 2, 'hello']
[42, 2, 'hello']
[42, 2, 'hello']
Process finished with exit code 0
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: process_queue
# time: 2021/05/23
from multiprocessing import Process,Queue
def f(q):
q.put([42,2,'hello']) #NameError: name 'q' is not defined
print('subprocess id:',id(q))
if __name__ == '__main__':
q = Queue()
p_list=[]
print('main q id:',id(q))
for i in range(3):
p = Process(target=f,args=(q,))
p_list.append(p)
p.start()
print(q.get())
print(q.get())
print(q.get())
for i in p_list:
i.join()
/home/smoke/文档/DocumentFile/PycharmProjects/选课系统Demo/Jaime/venv/bin/python /home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/join/process_queue.py
main q id: 140626024558752
subprocess id: 140626024558752
[42, 2, 'hello']
subprocess id: 140626024558752
[42, 2, 'hello']
subprocess id: 140626024558752
[42, 2, 'hello']
Process finished with exit code 0
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: process_queue
# time: 2021/05/23
from multiprocessing import Process,Queue
def f(q):
q.put([42,2,'hello']) #NameError: name 'q' is not defined
print('subprocess id:',id(q))
if __name__ == '__main__':
q = Queue()
p_list=[]
print('main q id:',id(q))
q.put(333)
for i in range(3):
p = Process(target=f,args=(q,))
p_list.append(p)
p.start()
print(q.get())
print(q.get())
print(q.get())
for i in p_list:
i.join()
/home/smoke/文档/DocumentFile/PycharmProjects/选课系统Demo/Jaime/venv/bin/python /home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/join/process_queue.py
main q id: 139864203010208
333
subprocess id: 139864203010208
[42, 2, 'hello']
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: process_queue
# time: 2021/05/23
from multiprocessing import Process,Queue
import queue
def f(q):
q.put([42,2,'hello']) #NameError: name 'q' is not defined
print('subprocess id:',id(q))
if __name__ == '__main__':
# q = Queue()
q=queue.Queue()
p_list=[]
print('main q id:',id(q))
q.put(333)
for i in range(3):
p = Process(target=f,args=(q,))
p_list.append(p)
p.start()
print(q.get())
print(q.get())
print(q.get())
for i in p_list:
i.join()
/home/smoke/文档/DocumentFile/PycharmProjects/选课系统Demo/Jaime/venv/bin/python /home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/join/process_queue.py
main q id: 139800601780384
333
subprocess id: 139800601780384
#Pipes
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: process_queue
# time: 2021/05/23
from multiprocessing import Process,Pipe
def f(conn):
conn.send([42,None,'hello']) #子进程发送
conn.close()
if __name__ == '__main__':
parent_conn,child_conn = Pipe() #通信管道,主进程和子进程
p = Process(target=f,args=(child_conn,))
p.start()
print(parent_conn.recv()) #主进程接收
p.join()
/home/smoke/文档/DocumentFile/PycharmProjects/选课系统Demo/Jaime/venv/bin/python /home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/join/process_queue.py
[42, None, 'hello']
Process finished with exit code 0
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: process_queue
# time: 2021/05/23
from multiprocessing import Process,Pipe
def f(conn):
conn.send('约吗') #子进程发送
conn.close()
if __name__ == '__main__':
parent_conn,child_conn = Pipe() #通信管道,主进程和子进程
p = Process(target=f,args=(child_conn,))
p.start()
print(parent_conn.recv()) #主进程接收
p.join()
/home/smoke/文档/DocumentFile/PycharmProjects/选课系统Demo/Jaime/venv/bin/python /home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/join/process_queue.py
约吗
Process finished with exit code 0
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: process_queue
# time: 2021/05/23
from multiprocessing import Process,Pipe
def f(conn):
conn.send('约吗') #子进程发送
conn.send('约吗') #子进程发送
conn.close()
if __name__ == '__main__':
parent_conn,child_conn = Pipe() #通信管道,主进程和子进程
p = Process(target=f,args=(child_conn,))
p.start()
print(parent_conn.recv()) #主进程接收
print(parent_conn.recv()) #主进程接收
p.join()
/home/smoke/文档/DocumentFile/PycharmProjects/选课系统Demo/Jaime/venv/bin/python /home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/join/process_queue.py
约吗
约吗
Process finished with exit code 0
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: process_queue
# time: 2021/05/23
from multiprocessing import Process,Pipe
def f(conn):
conn.send('约吗') #子进程发送
conn.send('约吗') #子进程发送
print(conn.recv())
conn.close()
if __name__ == '__main__':
parent_conn,child_conn = Pipe() #通信管道,主进程和子进程
p = Process(target=f,args=(child_conn,))
p.start()
print(parent_conn.recv()) #主进程接收
print(parent_conn.recv()) #主进程接收
parent_conn.send('约')
p.join()
/home/smoke/文档/DocumentFile/PycharmProjects/选课系统Demo/Jaime/venv/bin/python /home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/join/process_queue.py
约吗
约吗
约
Process finished with exit code 0
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: process_queue
# time: 2021/05/23
from multiprocessing import Process,Pipe
def f(conn):
conn.send('约吗') #子进程发送
conn.close()
if __name__ == '__main__':
parent_conn,child_conn = Pipe() #通信管道,主进程和子进程
p = Process(target=f,args=(child_conn,))
p2 = Process(target=f,args=(child_conn,))
p.start()
p2.start()
print(parent_conn.recv()) #主进程接收
p.join()
/home/smoke/文档/DocumentFile/PycharmProjects/选课系统Demo/Jaime/venv/bin/python /home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/join/process_queue.py
约吗
Process finished with exit code 0
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: process_queue
# time: 2021/05/23
from multiprocessing import Process,Pipe
def f(conn):
conn.send('约吗') #子进程发送
conn.close()
if __name__ == '__main__':
parent_conn,child_conn = Pipe() #通信管道,主进程和子进程
p = Process(target=f,args=(child_conn,))
p2 = Process(target=f,args=(child_conn,))
p.start()
p2.start()
print(parent_conn.recv()) #主进程接收
print(parent_conn.recv()) #主进程接收
p.join()
/home/smoke/文档/DocumentFile/PycharmProjects/选课系统Demo/Jaime/venv/bin/python /home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/join/process_queue.py
约吗
约吗
Process finished with exit code 0
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: process_queue
# time: 2021/05/23
from multiprocessing import Process,Pipe
def f(conn):
conn.send('约吗') #子进程发送
conn.close()
if __name__ == '__main__':
parent_conn,child_conn = Pipe() #通信管道,主进程和子进程
p = Process(target=f,args=(child_conn,))
p2 = Process(target=f,args=(child_conn,))
p.start()
p2.start()
print(parent_conn.recv()) #主进程接收
print(parent_conn.recv()) #主进程接收
print(parent_conn.recv()) #主进程接收
p.join()
/home/smoke/文档/DocumentFile/PycharmProjects/选课系统Demo/Jaime/venv/bin/python /home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/join/process_queue.py
约吗
约吗
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: process_queue
# time: 2021/05/23
from multiprocessing import Process, Pipe
import os
def f(conn):
conn.send('约吗') # 子进程发送
print(conn.recv, 'in the %s' %os.getpid())
conn.close()
if __name__ == '__main__':
parent_conn, child_conn = Pipe() # 通信管道,主进程和子进程
p = Process(target=f, args=(child_conn,))
p2 = Process(target=f, args=(child_conn,))
p.start()
p2.start()
print(parent_conn.recv()) # 主进程接收
print(parent_conn.recv()) # 主进程接收
parent_conn.send('hello')
p.join()
/home/smoke/文档/DocumentFile/PycharmProjects/选课系统Demo/Jaime/venv/bin/python /home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/join/process_queue.py
<bound method _ConnectionBase.recv of <multiprocessing.connection.Connection object at 0x7f6b44e3cdc0>> in the 895963
约吗
约吗
<bound method _ConnectionBase.recv of <multiprocessing.connection.Connection object at 0x7f6b44e3cdc0>> in the 895964
Process finished with exit code 0
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: process_queue
# time: 2021/05/23
from multiprocessing import Process, Pipe
import os
def f(conn):
conn.send('约吗') # 子进程发送
print(conn.recv,'in the %s' %os.getpid())
conn.close()
if __name__ == '__main__':
parent_conn, child_conn = Pipe() # 通信管道,主进程和子进程
p = Process(target=f, args=(child_conn,))
p2 = Process(target=f, args=(child_conn,))
p.start()
p2.start()
print(parent_conn.recv()) # 主进程接收
print(parent_conn.recv()) # 主进程接收
parent_conn.send('hello')
parent_conn.send('hello2')
p.join()
/home/smoke/文档/DocumentFile/PycharmProjects/选课系统Demo/Jaime/venv/bin/python /home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/join/process_queue.py
<bound method _ConnectionBase.recv of <multiprocessing.connection.Connection object at 0x7f32fb5abdc0>> in the 897007
约吗
约吗
<bound method _ConnectionBase.recv of <multiprocessing.connection.Connection object at 0x7f32fb5abdc0>> in the 897008
Process finished with exit code 0
#数据共享
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: Manager
# time: 2021/05/24
from multiprocessing import Process,Manager
def f(d,l,n):
d[1] = '1'
d['2'] = 2
d[0.25] = None
l.append(n)
# print(l)
# print('sub',id(d))
if __name__ == '__main__':
with Manager() as manager: #with open() as f == f=open() manager = Manager()
d = manager.dict() #创建共享字典
l = manager.list(range(5)) #创建共享列表
p_list = []
# print('main',id(d))
for i in range(10):
p = Process(target=f,args=(d,l,i))
p.start()
p_list.append(p)
for res in p_list:
res.join()
print(d)
print(l)
/home/smoke/文档/DocumentFile/PycharmProjects/选课系统Demo/Jaime/venv/bin/python /home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/join/Manager.py
{1: '1', '2': 2, 0.25: None}
[0, 1, 2, 3, 4, 0, 2, 1, 3, 5, 6, 8, 9, 7, 4]
Process finished with exit code 0
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: Manager
# time: 2021/05/24
from multiprocessing import Process,Manager
def f(d,l,n):
d[n] = '1'
d['2'] = 2
d[0.25] = None
l.append(n)
# print(l)
# print('sub',id(d))
if __name__ == '__main__':
with Manager() as manager: #with open() as f == f=open() manager = Manager()
d = manager.dict() #创建共享字典
l = manager.list(range(5)) #创建共享列表
p_list = []
# print('main',id(d))
for i in range(10):
p = Process(target=f,args=(d,l,i))
p.start()
p_list.append(p)
for res in p_list:
res.join()
print(d)
print(l)
/home/smoke/文档/DocumentFile/PycharmProjects/选课系统Demo/Jaime/venv/bin/python /home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/join/Manager.py
{1: '1', '2': 2, 0: '1', 0.25: None, 2: '1', 4: '1', 6: '1', 5: '1', 3: '1', 7: '1', 8: '1', 9: '1'}
[0, 1, 2, 3, 4, 1, 0, 2, 4, 6, 3, 5, 8, 9, 7]
Process finished with exit code 0
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: Manager
# time: 2021/05/24
from multiprocessing import Process,Manager
def f(d,l,n):
d[n] = '1'
d['2'] = 2
d[0.25] = None
l.append(n)
# print(l)
print('sub',id(d))
if __name__ == '__main__':
with Manager() as manager: #with open() as f == f=open() manager = Manager()
d = manager.dict() #创建共享字典
l = manager.list(range(5)) #创建共享列表
p_list = []
print('main',id(d))
for i in range(10):
p = Process(target=f,args=(d,l,i))
p.start()
p_list.append(p)
for res in p_list:
res.join()
print(d)
print(l)
/home/smoke/文档/DocumentFile/PycharmProjects/选课系统Demo/Jaime/venv/bin/python /home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/join/Manager.py
main 140265113266160
sub 140265113266160
sub 140265113266160
sub 140265113266160
sub 140265113266160
sub 140265113266160
sub 140265113266160
sub 140265113266160
sub 140265113266160
sub 140265113266160
sub 140265113266160
{0: '1', '2': 2, 0.25: None, 1: '1', 2: '1', 3: '1', 4: '1', 5: '1', 6: '1', 7: '1', 8: '1', 9: '1'}
[0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Process finished with exit code 0
#daemon
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: Manager
# time: 2021/05/24
import time
from multiprocessing import Process
def foo(l):
time.sleep(1)
print(p.is_alive().i, p.pid)
time.sleep(l)
if __name__ == '__main__':
p_list = []
for i in range(10):
p = Process(target=foo, args=(i,))
p.daemon=True
p_list.append(p)
for p in p_list:
p.start()
# for p in p_list:
# p.join()
print('main process end')
/home/smoke/文档/DocumentFile/PycharmProjects/选课系统Demo/Jaime/venv/bin/python /home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/join/Manager.py
main process end
Process finished with exit code 0
浙公网安备 33010602011771号