Python并发编程之-进程

一: 进程的基本使用

  • windows系统中开启进程必须在main里 不然会报错
import multiprocessing

def task(args):
    print(args)


if __name__ == '__main__':
    for i in range(10):
        p = multiprocessing.Process(target=task,args=(i,))
        p.start()

二: 进程间数据不共享

  • 进程
import multiprocessing

data_list=[]

def task(args):
    data_list.append(args)
    print(data_list)


if __name__ == '__main__':
    for i in range(10):
        p = multiprocessing.Process(target=task,args=(i,))
        p.start()

[0]
[1]
[3]
[2]
[4]
[5]
[6]
[7]
[8]
[9]
  • 线程
import multiprocessing
import threading

data_list=[]

def task(args):
    data_list.append(args)
    print(data_list)


if __name__ == '__main__':
    for i in range(10):
        p = threading.Thread(target=task,args=(i,))
        p.start()


[0]
[0, 1]
[0, 1, 2]
[0, 1, 2, 3]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4, 5]
[0, 1, 2, 3, 4, 5, 6]
[0, 1, 2, 3, 4, 5, 6, 7]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

三: 常用方法

  • join等待
  • daemon
  • name
import multiprocessing

def task(args):
    p = multiprocessing.current_process()
    print(p.name,p.ident) # ident/pid

if __name__ == '__main__':
    for i in range(10):
        p = multiprocessing.Process(target=task,args=(i,))
        p.name = str(i)
        p.start()

四: 面向对象的方式创建进程

import multiprocessing

class MyProcess(multiprocessing.Process):
    def run(self):
        print(multiprocessing.current_process())

def run():
    p1 = MyProcess()
    p1.start()

if __name__ == '__main__':
    run()
原文地址:https://www.cnblogs.com/wc89/p/11105483.html