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