Python 多程序 共享資料

2021-08-03 03:28:28 字數 3566 閱讀 9585

# -*- 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(2))

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

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

defjjj

(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

defkkk

(a_list, number):

for i in range(10):

time.sleep(random.randrange(2))

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

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

defjjj

(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, 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, 2, 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多程序共享資料

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...

python多程序之資料共享Manager

多程序中,各個程序開闢空間,資料是不共享的,如果想讓其資料在各個程序中實現共享,需要借助manager from multiprocessing import process from multiprocessing import manager from multiprocessing impor...