[Python]multiprocessing学习记录

我的python环境 /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6

安装

pip3 install multiprocess


随便找了个打印测试

from multiprocessing import Process

def fuck(i):
    print("fuck zhangenmei",i)

for i in range(10):
    p = Process(target=fuck(i))
    p.start()

哈?,是我写错了吗,怎么是有序的

image.png

我觉得可能是方法执行的东西太少了,所以我加一个循环试试看

def fuck(i):
    for j in range(i):
        print("fuck zhangenmei",i,'-',j)
    # print(threading.current_thread())

def printTest():
    for i in range(10):
        p = Process(target=fuck,args=(I,))
        p.start()

printTest()

仍然是有序的,所以我决定先去百度

image.png
from multiprocessing import Process
import threading
import os

def fuck(i):
    for j in range(i):
        print("进程",i,'-',j,'id',os.getpid())
        print(threading.current_thread())

def printTest():
    for i in range(10):
        p = Process(target=fuck,args=(I,))
        # print('进程',i,'process start')
        p.start()

printTest()

那么现在文明一点

image.png

我本以为进程会同时执行

我现在的疑问是:为什么不是并行?

这里开始就需要进程池了

from multiprocessing import Process
import multiprocessing
import threading
import time
import os

def fuck(i):

    for j in range(i):
        print('进程', i, 'start')
        # time.sleep(3)
        print("进程",i,'-',j,'id',os.getpid())
        # print(threading.current_thread())

def printTest():
    pool = multiprocessing.Pool(processes = 5)
    for i in range(5):
        p = Process(target=fuck,args=(I,))
        print('进程',i,'will start')
        pool.apply_async(fuck,(I,))
    print('end')
    pool.close()
    pool.join()

printTest()
image.png

告辞!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容