Python實現多程序共享資料的方法分析

2022-09-29 09:06:12 字數 3521 閱讀 3411

示例一:

# -*- coding:utf-8 -*-

from multiprocessing import process, manager

import time

import random

def kkk(a_list, number):

for i in range(10):

a_list.append(i)

time.sleep(random.randrange(2))

print('這是程序{} {}'.format(number, a_list))

print('這是程序{} {}'.format(number, a_list))

def jjj(a_list):

for i in range(2):

process = process(target=kkk, args=(a_list, i))

process.start()

if __name__ == '__main__':

a_list =

process_0 = process(target=jjj, args=(a_list,))

process_0.start()

process_0.join()

print(a_list)

print(len(a_list))

print('it\'s ok')

輸出:這是程序0 [0]

這是程序0 [0, 1]

這是程序0 [0, 1, 2]

這是程序0 [0, 1, 2, 3]

這是程序1 [0]

這是程序0 [0, 1, 2, 3, 4]

這是程序1 [0, 1]

這是程序0 [0, 1, 2, 3, 4, 5]

這是程序1 [0, 1, 2]

這是程序1 [0, 1, 2, 3]

這是程序1 [0, 1, 2, 3, 4]

這是程序1 [0, 1, 2, 3, 4, 5]

這是程序0 [0, 1, 2, 3, 4, 5, 6]

這是程序0 [0, 1, 2, 3, 4, 5, 6, 7]

這是程序0 [0, 1, 2, 3, 4, 5, 6, 7, 8]

這是程序1 [0, 1, 2, 3, 4, 5, 6]

這是程序0 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

這是程序0 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

這是程序1 [0, 1, 2, 3, 4, 5, 6, 7]

這是程序1 [0, 1, 2, 3, 4, 5, 6, 7, 8]

這是程序1 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

這是程序1 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

0it's ok

process finished with exit code 0

示例二:

使用 manager

# -*- coding:utf-8 -*-

from multiprocessing import process, manager

import time

import random

def kkk(a_list, number):

for i in range(10):

a_l程式設計客棧ist.append(i)

time.sleep(random.randrange(2))

www.cppcns.com print('這是程序{} {}'.format(number, a_list))

print('這是程序{} {}'.format(number, a_list))

def jjj(a_list):

for i in range(2):

process = process(target=kkk, args=(a_list, i))

process.start()

if __name__ == '__main__':

manager = manager()

a_list = manager.list()

# a_list =

process_0 = process(target=jjj, args=(a_list,))

process_0.start()

process_0.join()

print(a_list)

print(len(a_list))

print('it\'s ok')

輸出:這是程序0 [0, 0]

這是程序0 [0, 0, 1]

這是程序0 [0, 0, 1, 2]

這是程序0 [0, 0, 1, 2, 3]

這是程序0程式設計客棧 [0, 0, 1, 2, 3, 4]

這是程序1 [0, 0, 1, 2, 3, 4, 5]

這是程序0 [0, 0, 1, 2, 3, 4, 5, 1]

這是程序1 [0, 0, 1, 2, 3, 4, 5, 1, 6]

這是程序1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2]

這是程序1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3]

這是程序1 [0, 0, 1, 2, 3, 4,rzfxcq 5, 1, 6, 2, 3, 4]

這是程序1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5]

這是程序0 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6]

這是程序0 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7]

這是程序0 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8]

這是程序1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8, 9]

這是程序1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8, 9, 7]

這是程序0 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8, 9, 7, 8]

這是程序0 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8, 9, 7, 8]

這是程序1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8, 9, 7, 8]

這是程序1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 3, 4, 5, 6, 7, 8, 9, 7, 8, 9]

這是程序1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8, 9, 7, 8, 9]

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

20it's ok

process finished with exit code 0

Python 多程序 共享資料

coding utf 8 from multiprocessing import process,manager import time import random defkkk a list,number for i in range 10 time.sleep random.randrange ...

python多程序共享資料

python的multiprocessing模組提供兩種共享記憶體,sharedctypes與manager,manager效率較低,但支援遠端共享記憶體。sharedctypes效率較高,快manager兩個數量級,在多程序訪問時與普通記憶體訪問相當 共享方式 支援的型別 shared memor...

多程序資料共享

不用程序池的多程序的資料共享from multiprocessing import process,queue queue queue def func a,q re f 我是子程序 我放入data q.put re if name main ls for i in range 10 p proce...