py 的 第 34 天

1.进程,首先说了一下进程怎么写的,这个和线程写的不一样

import multiprocessing
data_list = []

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


def run():
    for i in range(10):
        p = multiprocessing.Process(target=task,args=(i,))
        # p = threading.Thread(target=task,args=(i,))
        p.start()

if __name__ == '__main__':
    run()

 2。进程间的数据共享,本来是不可共享的

import multiprocessing          这是线程模块
import threading
import queue            本来是queue。Queue是一个队列,但是线程好使,在这不好使了
import time

q = multiprocessing.Queue()

def task(arg,q):
    q.put(arg)


def run():
    for i in range(10):
        p = multiprocessing.Process(target=task, args=(i, q,))
        p.start()

    while True:
        v = q.get()
        print(v)
run()
# ##################### 进程间的数据共享:Manager #####################
"""
def task(arg,dic):
    time.sleep(2)
    dic[arg] = 100

if __name__ == '__main__':
    m = multiprocessing.Manager()
    dic=m.dic()   这是一个字典   只有这个字典才通用  d={}这样在这写不行,不能大家一起用
    
    process_list = []
    for i in range(10):
        p = multiprocessing.Process(target=task, args=(i,dic,))
        p.start()

        process_list.append(p)

    while True:
        count = 0
        for p in process_list:
            if not p.is_alive():      。is_alive是否还活着
                count += 1
        if count == len(process_list):
            break
    print(dic)
    # ...
"""                                            刚才用的manager中queue方法,

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注